我使用 ubuntu 12 和 selenium 和 firefox 7(第一个是 21,我检查了 selenium 支持列表,它不支持 firefox 21,所以我卸载 21 并安装 7。我还安装了 selenium ide 和 selenium webdriver。
这是我的目标
<a href="javascript:void(0);" class="vd_dload" data-info="....">
<a href="javascript:void(0);" class="vd_dload" data-info="....">
<a href="javascript:void(0);" class="vd_dload" data-info="....">
所以我使用 eq(0) eq(1) 来选择元素。我在 selenium ide 中测试它,它有效。我选择它喜欢
command clickandwait css=a.vd_dload:eq(2)
并保存为python测试代码
driver.find_element_by_css_selector("a.vd_dload:eq(1)").click()
python 代码在这里兑现。它报告:
InvalidSelectorException:Message: u'The give selecor a.vd_dload:eq(2) is either invalid or does not result in a webElement. the following error occurred:\n[Exception.."An invalid or illegal string was specified" code:"12" nsresult:"0x8053000c (NS_ERROR_DOM_SYNTAX_ERR)" location......
有人给点建议吗?
最佳答案
eq
是一个 jQuery 选择器,因此不是 CSS 标准的一部分。因此,一旦您使用 Selenium 运行它并告诉它“这是我的 CSS 选择器”,它就会成为一个非常不愉快的工具。
虽然不是直接等效(如 eq
!= nth-child
),但在您的实例中,CSS 选择器 nth-child
会正常工作:
a.vd_dload:nth-child(1)
a.vd_dload:nth-child(2)
a.vd_dload:nth-child(3)
请注意,nth-child
CSS 选择器是 CSS3 选择器规范的一部分,因此可能会导致 IE 出现问题。它仅在 IE9 及更高版本以及任何现代版本的 FF/Chrome 等中受支持。
关于css - selenium firefox css 选择器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16932653/