【发布时间】:2013-08-31 17:32:14
【问题描述】:
在 Python 上的 Selenium 中,我正在尝试使用
选择一个元素driver = webdriver.Firefox()
driver.find_element_by_css_selector("td:contains('hello world')")
这给了我错误:
>>>> selenium.common.exceptions.WebDriverException: Message: u'An invalid or illegal string was specified'
我可以通过这种方式使用许多不同的 CSS 选择器来选择元素,但使用 :contains() 似乎总是会引发错误。注意:当我尝试使用时,我得到了同样的错误:
driver.find_element_by_xpath("//td[contains(text(),'hello world')]")
请指教。谢谢!
编辑:已解决!
问题解决了!非常感谢你的帮助!我犯了两个重大错误: 1.)我认为 :contains() 是一个公认的 css3 选择器(结果它不是当前规范的一部分,这就是为什么我不能这样选择) 2.) xpath 选择器会很好,只是我使用的解析器假定 xpath 中永远不会有任何空格,所以它用空格分割参数。因此,当我传入 xpath 选择器时
//td[contains(text(),'hello world']
解析器在 'hello' 之后的空格处被截断,所以 xpath 选择器看起来像
//td[contains(text(),'hello
这显然会引发错误。所以我需要调整我的解析以正确读取我的 xpath 选择器。
再次感谢您快速、有用的回答!
【问题讨论】:
-
请向我们展示html内容..
-
CSS Selectors 没有任何名称为
contains.. -
cssselect支持:contains()伪选择器,但它指的是已删除的早期 CSS3 草案 (pythonhosted.org/cssselect/#supported-selectors)。我不知道有其他项目支持这个伪选择器 -
@pault。那是 jQery 之一 - api.jquery.com/contains-selector 。 Selenium 不支持那个 jQuery ..
-
@Babai,jQuery 拥有的
contains选择器实际上来自 Sizzle,而不是 jQuery。
标签: python xpath selenium css-selectors