Python Selenium webdriver超时异常

2021-08-02 18:01:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个从网站上提取数据的项目。在这个网站有搜索表,我应该填写它。其中一个输入是文本,输入2或3个字符后显示一个建议,我应该选择该选项,以便继续或搜索按钮将被激活。问题是当我使用以下代码时:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='LocationSuggestionBox']/ul/div/li/div"))).click()

我修改了上面代码中的xpath。实际xpath如下:

//*[@id="LocationSuggestionBox""]/ul/div/li/div

但是我不知道如何在我的代码中添加它来避免语法错误。你知道吗

我的工作代码的最终结果是:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='LocationSuggestionBox']/ul/div/li/div"))).click()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/support/wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 
2条回答
网友
1楼 ·

当我在页面上运行时,XPath返回NULL,因此这里的选择器不正确。你知道吗

根据您提供的页面信息,这里有一个正确的选择器:

"//li[div/span[text()='" + locationNameHere + "']]"

因此,您可以将代码更改为:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[div/span[text()='" + locationNameHere + "']]"))).click()

如果您只想单击第一个位置建议,可以使用以下选项:

//li[div/span]

但是这个XPath将为您提供所有可见位置建议的列表。你知道吗

网友
2楼 ·

归纳WebDriverWaitelement_to_be_clickable()并遵循xpath。你知道吗

driver.get('https://locatr.cloudapps.cisco.com/WWChannels/LOCATR/openBasicSearch.do;jsessionid=8CDF9284D014CFF911CB8E6F81812619')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='searchLocationInput']"))).send_keys('China')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='ng-scope']//span[text()='CHINA']"))).click()

浏览器快照:

enter image description here

相关问题