我是Selenium的新手,正在使用Python客户端库实现selenium-rc。我尝试使用命令“sel.get_xpath_count(xpath)”遍历我的页面div使用xpath(s)元素。
它给出了20的计数,但是当我使用for语句和命令“sel.get_text(xpath ='%s [%d]'%(xpath,i))”迭代每个div时,它只发现第一个元素,并在剩余的19个未找到的div上给出错误。
答案 0 :(得分:2)
您的第二个XPath表达式错误。使用C风格语言培训的程序员经常犯这个错误,因为他们看到[...]
并认为“索引到数组中”,但这不是XPath中的括号。
如果您使用sel.get_xpath_count(something)
,则需要使用sel.get_text("xpath=(something)[item_number]")
。请注意在第二次使用时在原始XPath表达式周围使用括号。
这背后的原因是something[item_count]
是something AND position() = item_count
的简写 - 因此你最终将另一个谓词添加到“something”表达式,而不是选择表达式选择的一个节点。 (something)[item_count]
有效,因为(something)
的值是节点列表,添加position() = item_count
会从列表中选择具有指定位置的节点。 那是更像是C风格的数组。