Python / Selenium Не могу найти окно поиска - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь выбрать первое окно поиска на этом сайте: https://www.ris.bka.gv.at/Bundesrecht/

Это мой код:

   for ii in testList2:
    varTitel = ii

    searchBox = driver.find_element_by_id('MainContent_SuchworteField')
    searchBox = driver.find_element_by_xpath('//*[@id="MainContent_SuchworteField"]/span')
    searchBox = driver.find_element_by_name('MainContent_SuchworteField_Value')

    searchBox.send_keys(varTitel)
    searchBox.send_keys(Keys.ENTER)

    time.sleep(1)
    print("Query link: " + driver.current_url)
    driver.back()

driver.quit()

Как видите, я попробовал три способа выбора окна поиска. Каждый раз, когда я получаю исключения NoSuchElement.

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"id","selector":"MainContent_SuchworteField"}

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="MainContent_SuchworteField"]/span"}

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"MainContent_SuchworteField_Value"}

Вот фрагмент того, что показывается после осмотра сайта. enter image description here

Я надеюсь, что вы можете мне помочь,

Приветствия

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Согласно снимку HTML , который вы предоставили для идентификации поля <input> рядом с полем с текстом как Suchworte , вы можете использовать следующий блок кода:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\WebDrivers\ChromeDriver\chromedriver_win32\chromedriver.exe')
driver.get('https://www.ris.bka.gv.at/Bundesrecht/')
driver.find_element_by_xpath("//input[@id='MainContent_SuchworteField_Value']").send_keys("Sasa")

Снимок браузера:

Sasa

0 голосов
/ 26 апреля 2018

Мне удалось заставить это работать со следующим кодом. Я использовал веб-драйвер Chrome, но я думаю, что использование сна и предоставление странице большего времени для загрузки может сделать это для вас. Я прошу прощения, я знаю, что это не ответ с вашим кодом, но он показывает, что xpath будет работать. Обратите внимание, что xpath немного отличается от вашего. В противном случае, я надеюсь, что кто-то здесь сможет дать лучший ответ. Надеюсь, это поможет!

from selenium import webdriver
from time import sleep

browser = webdriver.Chrome()

browser.get('https://www.ris.bka.gv.at/Bundersrecht/')

sleep(5)

suchworte = browser.find_element_by_xpath('//*[@id="MainContent_SuchworteField_Value"]')

suchworte.send_keys('test')
...