我使用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......
有人给出一些建议吗?
答案 0 :(得分:0)
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 /等。