Jer*_*itz 6 python selenium xpath css-selectors
在 Python 上的 Selenium 中,我尝试使用选择一个元素
driver = webdriver.Firefox()
driver.find_element_by_css_selector("td:contains('hello world')")
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
>>>> selenium.common.exceptions.WebDriverException: Message: u'An invalid or illegal string was specified'
Run Code Online (Sandbox Code Playgroud)
我可以通过这种方式使用许多不同的 CSS 选择器来选择元素,但使用 :contains() 似乎总是会抛出错误。注意:当我尝试使用时遇到同样的错误:
driver.find_element_by_xpath("//td[contains(text(),'hello world')]")
Run Code Online (Sandbox Code Playgroud)
请指教。谢谢!
编辑:解决了!
问题解决了!非常感谢你的帮助!我犯了两个重大错误:1.)我认为 :contains() 是一个可接受的 css3 选择器(事实证明它不是当前规范的一部分,这就是为什么我无法选择这种方式)2.)xpath 选择器本来就很好,除了我使用的解析器假设 xpath 中永远不会有任何空格,因此它按空格分割参数。因此,当我传入 xpath 选择器时
//td[contains(text(),'hello world']
Run Code Online (Sandbox Code Playgroud)
解析器在“hello”之后的空格处被截断,因此 xpath 选择器看起来像
//td[contains(text(),'hello
Run Code Online (Sandbox Code Playgroud)
这显然会引发错误。所以我需要调整我的解析以正确读取我的 xpath 选择器。
再次感谢您所有快速、有用的答案!
替换find_element_by_xpath_selector为find_element_by_xpath(没有find_element_by_xpath_selector方法):
driver = webdriver.Firefox()
...
driver = driver.find_element_by_xpath(u"//td[contains(text(), 'hello')]")
Run Code Online (Sandbox Code Playgroud)
完整示例
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://python.org')
link = driver.find_element_by_xpath(u'//a[contains(text(), "Download")]')
link.click()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20455 次 |
| 最近记录: |