Выберите скрытое значение параметра из источника, используя python selenium chromedriver

Я читаю файл Docx [здесь ссылка] , анализируя текст из этого и затем используя python selenium bindings & chrome-driver. Я пытаюсь щелкнуть значение параметра Hidden из источника (driver.page_source). Я знаю, что он недоступен для выбора. Вот мой код:

import time, re from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from docx import opendocx, getdocumenttext from requests import Session def read_return(word_file): document = opendocx(word_file) paratextlist = getdocumenttext(document) newparatextlist = [] for paratext in paratextlist: newparatextlist.append((paratext.encode("utf-8")).strip('\n').strip('\t').strip('\r')) newparatextlist = str(newparatextlist).replace("]","").replace("[","") with open('sample.txt','wb')as writer: writer.write(newparatextlist) return newparatextlist word_file = read_return('Taxatierapport SEK - Auto Centrum Bollenstreek - Peugeot 308 - 5603.docx') x = lambda x:re.findall(x,word_file,re.DOTALL)[0].strip().replace("'","'").replace('"',''') Voertuig = x("::OBJECT::', '(.+?)'") Merk = x("::MERK::', '(.+?)'") Model = x("::TYPE::', '(.+?)'") TOELATING = x("::BOUWJAAR 1STE TOELATING::', '(.+?)'") d1 = TOELATING.split("-")[0] d2 = TOELATING.split("-")[1] d3 = TOELATING.split("-")[2] TRANSMISSIE = x("::TRANSMISSIE::', '(.+?)'") BRANDSTOF = x("::BRANDSTOF::', '(.+?)'") print "%r\n%r\n%r\n%r\n%r\n%r\n%r\n%r\n" %(Voertuig, Merk, Model, d1, d2, d3, TRANSMISSIE, BRANDSTOF) if Voertuig == "Personenauto": value = 1 elif Voertuig == "Personenbussen": value = 7 elif Voertuig == "Bedrijfsauto's tot 3.5 ton": value = 3 elif Voertuig == "Bedrijfsauto's 4x4": value = 2 elif Voertuig == "Motoren": value= 5 xr = 0; yr = 0; zr = 1972 while xr < 32: if int(d1) == xr: dvalue1 = xr else: pass xr+=1 while yr < 13: if int(d2) == yr: dvalue2 = yr else: pass yr+=1 while zr < 2018: if int(d3) == zr: dvalue3 = zr else: pass zr+=1 driver = webdriver.Chrome('chromedriver.exe') driver.get('https://autotelexpro.nl/LoginPage.aspx') driver.find_element(By.XPATH, value ='//*[@id="ctl00_cp_LogOnView_LogOn_txtVestigingsnummer"]').send_keys('3783') driver.find_element(By.XPATH, value ='//*[@id="ctl00_cp_LogOnView_LogOn_txtGebruikersnaam"]').send_keys('Frank') driver.find_element(By.XPATH, value ='//*[@id="ctl00_cp_LogOnView_LogOn_Password"]').send_keys('msnauto2016') driver.find_element(By.XPATH, value ='//*[@id="ctl00_cp_LogOnView_LogOn_btnLogin"]').click() time.sleep(10) #try: driver.find_element(By.XPATH, value ='//select[@name="ctl00$cp$ucSearch_Manual$ddlVoertuigType"]/option[@value="'+str(value)+'"]').click() driver.find_element(By.XPATH, value ='//select[@name="ctl00$cp$ucSearch_Manual$ddlBouwdag"]/option[@value="'+str(dvalue1)+'"]').click() driver.find_element(By.XPATH, value ='//select[@name="ctl00$cp$ucSearch_Manual$ddlBouwmaand"]/option[@value="'+str(dvalue2)+'"]').click() driver.find_element(By.XPATH, value ='//select[@name="ctl00$cp$ucSearch_Manual$ddlBouwjaar"]/option[@value="'+str(dvalue3)+'"]').click() driver.find_element(By.XPATH, value ='//select[@name="ctl00$cp$ucSearch_Manual$ddlMerk"]/option[@value="130"]').click() #except: driver.quit() time.sleep(5) driver.quit() 

поэтому, используя модуль запросов, я делаю запрос POST к ссылке и получаю ответ, который имеет необходимые данные о параметрах, см. здесь:

 <select name="ctl00$cp$ucSearch_Manual$ddlMerk" onchange="updateInputForServerNoPB();InvalidateVehicleSearchResult();setTimeout('__doPostBack(\'ctl00$cp$ucSearch_Manual$ddlMerk\',\'\')', 0)" id="ctl00_cp_ucSearch_Manual_ddlMerk" class="NormalDropdownlist" style="width:174px;"> <option selected="selected" value="-1">- Kies merk -</option> <option value="95">Alfa Romeo</option> <option value="154">Aston Martin</option> <option value="96">Audi</option> <option value="97">Bentley</option> <option value="98">BMW</option> <option value="352">Bugatti</option> <option value="100">Cadillac</option> <option value="342">Chevrolet</option> <option value="101">Chevrolet USA</option> <option value="102">Chrysler</option> <option value="103">Citroen</option> <option value="337">Corvette</option> <option value="104">Dacia</option> <option value="105">Daihatsu</option> <option value="166">Daimler</option> <option value="162">Dodge</option> <option value="106">Donkervoort</option> <option value="107">Ferrari</option> <option value="108">Fiat</option> <option value="94">Ford</option> <option value="111">Honda</option> <option value="340">Hummer</option> <option value="112">Hyundai</option> <option value="365">Infiniti</option> <option value="113">Jaguar</option> <option value="114">Jeep</option> <option value="150">Kia</option> <option value="115">Lada</option> <option value="116">Lamborghini</option> <option value="117">Lancia</option> <option value="168">Land Rover</option> <option value="432">Landwind</option> <option value="118">Lexus</option> <option value="119">Lotus</option> <option value="120">Maserati</option> <option value="330">Maybach</option> <option value="121">Mazda</option> <option value="122">Mercedes-Benz</option> <option value="304">Mini</option> <option value="124">Mitsubishi</option> <option value="126">Morgan</option> <option value="127">Nissan</option> <option value="128">Opel</option> <option value="130">Peugeot</option> <option value="132">Porsche</option> <option value="134">Renault</option> <option value="135">Rolls-Royce</option> <option value="138">Saab</option> <option value="139">Seat</option> <option value="140">Skoda</option> <option value="226">smart</option> <option value="343">Spyker</option> <option value="210">SsangYong</option> <option value="141">Subaru</option> <option value="142">Suzuki</option> <option value="417">Think</option> <option value="144">Toyota</option> <option value="147">Volkswagen</option> <option value="145">Volvo</option> </select> 

, Я задаюсь вопросом, есть ли в любом случае я могу добавить приведенный выше текст строки в файл driver.page_source , чтобы я мог перебирать значения параметров, используя свойства драйвера ?

  • Скрыть консоль chromeDriver в python
  • Установите chrome.prefs с привязкой python для селена в chromedriver
  • Selenium в Python на Mac - исполняемый файл Geckodriver должен находиться в PATH
  • Может ли сайт обнаруживаться, когда вы используете селен с хромированным ребером?
  • Селен неожиданно имеет проблемы
  • Поддержка Chrome 59 для базовых учетных данных в URL-адресах, альтернативных для использования с Chromedriver?
  • Снимок экрана с полной страницей с Selenium Python (chromedriver)
  • Selenium WebDriverWait, но все же «Элемент не кликается в точке»
  • One Solution collect form web for “Выберите скрытое значение параметра из источника, используя python selenium chromedriver”

     from selenium import webdriver from selenium.webdriver.common.by import By import time from selenium.webdriver.support.ui import Select driver = webdriver.Chrome() driver.maximize_window() driver.get('https://autotelexpro.nl/LoginPage.aspx') driver.find_element(By.XPATH, value ='//*[@id="ctl00_cp_LogOnView_LogOn_txtVestigingsnummer"]').send_keys('3783') driver.find_element(By.XPATH, value ='//*[@id="ctl00_cp_LogOnView_LogOn_txtGebruikersnaam"]').send_keys('Frank') driver.find_element(By.XPATH, value ='//*[@id="ctl00_cp_LogOnView_LogOn_Password"]').send_keys('msnauto2016') driver.find_element(By.XPATH, value ='//*[@id="ctl00_cp_LogOnView_LogOn_btnLogin"]').click() time.sleep(10) currentselection = driver.find_element_by_xpath(".//*[@id='ctl00_cp_ucSearch_Manual_ddlVoertuigType']") select = Select(currentselection) select.select_by_visible_text("Motoren") time.sleep(5) try: x=driver.find_element_by_xpath(".//*[@id='ctl00_cp_ucSearch_Manual_ddlBouwdag']") select = Select(x) select.select_by_visible_text("1") y=driver.find_element_by_xpath(".//*[@id='ctl00_cp_ucSearch_Manual_ddlBouwmaand']") select = Select(y) select.select_by_visible_text("1") z=driver.find_element_by_xpath(".//*[@id='ctl00_cp_ucSearch_Manual_ddlBouwjaar']") select = Select(z) select.select_by_visible_text("2017") time.sleep(5) car = driver.find_element_by_css_selector("#ctl00_cp_ucSearch_Manual_ddlMerk") select = Select(car) select.select_by_visible_text("BTC") except: print "Not able to select" 

    этот код поможет. См. Лучший способ явного ожидания, но для временного решения я использовал time.sleep ()

    Обновление: если вы хотите получить опцию из раскрывающегося списка автомобилей, это метод, который можно использовать:

     def getallcarlist(): currentselection = driver.find_element_by_xpath(".//*[@id='ctl00_cp_ucSearch_Manual_ddlVoertuigType']") select = Select(currentselection) select.select_by_visible_text("Motoren") time.sleep(5) x = driver.find_element_by_xpath(".//*[@id='ctl00_cp_ucSearch_Manual_ddlBouwdag']") select = Select(x) select.select_by_visible_text("1") y = driver.find_element_by_xpath(".//*[@id='ctl00_cp_ucSearch_Manual_ddlBouwmaand']") select = Select(y) select.select_by_visible_text("1") z = driver.find_element_by_xpath(".//*[@id='ctl00_cp_ucSearch_Manual_ddlBouwjaar']") select = Select(z) select.select_by_visible_text("2017") time.sleep(5) car = driver.find_element_by_css_selector("#ctl00_cp_ucSearch_Manual_ddlMerk") carlist =[] for option in car.find_elements_by_tag_name('option'): carlist.append((option.text).encode('utf8')) return carlist 

    это способ назвать это

     listcar= getallcarlist() for c in listcar: print c 

    выход будет:

     - Kies merk - AGM AJP Aprilia Benelli Beta BMW BTC Bullit Derbi Ducati Energica Gilera Harley Davidson Hesketh Honda Husqvarna Hyosung Indian Kawasaki KTM Kymco Longjia Mash Morgan Mors Moto Guzzi MV Agusta Nimoto Ossa Peugeot Piaggio Quadro Razzo Renault Royal Enfield Sachs Scomadi Suzuki SWM SYM Triumph Turbho Vespa Victory Volta Motorbikes Yamaha Yiben Zero Motorcycles 
    Python - лучший язык программирования в мире.