首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebDriverWait语法错误

WebDriverWait语法错误
EN

Stack Overflow用户
提问于 2015-12-29 08:14:55
回答 1查看 218关注 0票数 0

运行OS X和Python 3.5.1。

只是想知道WebDriverWait搜索xpath的适当上下文是什么,然后在加载包含的网页后继续单击它。

代码语言:javascript
复制
WebDriverWait(driver, 10000).until(EC.presence_of_element_located(driver.find_element_by_xpath(".//*[@id='maincontent']/section[2]/div[1]/table/tbody/tr[1]/td[7]/button")))
a = driver.find_element_by_xpath(".//*[@id='maincontent']/section[2]/div[1]/table/tbody/tr[1]/td[7]/button")
a.click()

错误码如下

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Users/hansh/Desktop/markets.py", line 22, in <module>
    WebDriverWait(driver, 10000).until(EC.presence_of_element_located(driver.find_element_by_xpath(".//*[@id='maincontent']/section[2]/div[1]/table/tbody/tr[1]/td[7]/button")))
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 258, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 712, in find_element
    {'using': by, 'value': value})['value']
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 201, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 181, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":".//*[@id='maincontent']/section[2]/div[1]/table/tbody/tr[1]/td[7]/button"}
Stacktrace:
    at FirefoxDriver.prototype.findElementInternal_ (file:///var/folders/b3/h2pq8lmx4p11tb5h3m49xbth0000gn/T/tmpb9uhnk6f/extensions/fxdriver@googlecode.com/components/driver-component.js:10659)
    at FirefoxDriver.prototype.findElement (file:///var/folders/b3/h2pq8lmx4p11tb5h3m49xbth0000gn/T/tmpb9uhnk6f/extensions/fxdriver@googlecode.com/components/driver-component.js:10668)
    at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/b3/h2pq8lmx4p11tb5h3m49xbth0000gn/T/tmpb9uhnk6f/extensions/fxdriver@googlecode.com/components/command-processor.js:12534)
    at DelayedCommand.prototype.executeInternal_ (file:///var/folders/b3/h2pq8lmx4p11tb5h3m49xbth0000gn/T/tmpb9uhnk6f/extensions/fxdriver@googlecode.com/components/command-processor.js:12539)
    at DelayedCommand.prototype.execute/< (file:///var/folders/b3/h2pq8lmx4p11tb5h3m49xbth0000gn/T/tmpb9uhnk6f/extensions/fxdriver@googlecode.com/components/command-processor.js:12481)
EN

回答 1

Stack Overflow用户

发布于 2015-12-29 08:21:50

根据documentation,正确的语法是一个元组,其中第一个元素是定位器类型,第二个是定位器值。按如下方式重写:

代码语言:javascript
复制
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC    

wait = WebDriverWait(driver, 10)
presence_of = EC.presence_of_element_located
wait.until(presence_of((By.XPATH, ".//*[@id='maincontent']/section[2]/div[1]/table/tbody/tr[1]/td[7]/button")))

另外,请注意,您传递给WebDriverWait构造函数的超时值是以秒为单位的,而不是毫秒。您可能指的是10而不是10000

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34502667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档