Python / Selenium找不到搜索框

时间:2018-04-26 15:56:03

标签: python selenium selenium-webdriver xpath web-scraping

我正在尝试选择此网站上的第一个搜索框: 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 :(得分:0)

我设法使用以下代码。我使用的是Chrome网络驱动程序,但我认为使用sleep并为页面提供更多的加载时间可能会为您完成。我道歉,我知道这不是你的代码的答案,但它确实显示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')

答案 1 :(得分:0)

根据 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