我是Selenium的新手,正在使用Python客户端库实现selenium-rc。我尝试使用命令"sel.get_xpath_count(xpath)“使用xpath元素遍历页面的div。
它给出的计数是20,但是当我使用for语句和命令遍历每个div时,"sel.get_text(xpath='%s%d'%(xpath,i))",但是它只找到第一个元素,并在剩下的19个元素上给出一个错误,说没有找到div。
发布于 2011-05-03 15:18:42
第二个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风格的数组。
https://stackoverflow.com/questions/5866496
复制