硒计数xpath的元素

时间:2013-08-20 19:43:17

标签: python xpath selenium web2py

我有一个网页,其中包含许多下载链接的表格 我想让selenium点击最后一个:

表:

item1 Download
item2 Download
item3 Download

selenium必须点击Download下一个item3

我使用xpath查找所有元素,然后以这种方式获得返回数组或dict的大小

x = bot._driver.find_element_by_xpath("//a[contains(text(),'Download')]").size()

但我总是得到这个错误

TypeError: 'dict' object is not callable

我尝试使用get_xpath_count方法,但python中的selenium中不存在这种方法!

我想到了另一个解决方案,但我不知道该怎么做,它如下

x = bot._driver.find_element_by_xpath("(//a[contains(text(),'Download')])[size()-1]")

x = bot._driver.find_element_by_xpath("(//a[contains(text(),'Download')])[last()]")

或其他

3 个答案:

答案 0 :(得分:2)

使用find_elements_by_xpath获取相关元素的数量

count = len(driver.find_elements_by_xpath(xpath))

然后点击最后一个元素:

elem = driver.find_element_by_xpath(xpath[count])
elem.click()

注意:第一个代码段中的find_elements_by_xpath是复数

答案 1 :(得分:1)

虽然Python中不存在get_xpath_count("Xpath_Expression"),但您可以使用

len(bot._driver.find_element_by_xpath("//a[contains(text(),'Download')]"))

实现元素数量,然后使用

进行迭代
something.xpath(//a[position()=n])

其中

n < len(bot._driver.find_element_by_xpath("//a[contains(text(),'Download')]"))

答案 2 :(得分:0)

执行此操作的最佳方法是使用JavaScript并按类名

查找元素
self.bot._driver.execute_script("var e = document.getElementsByClassName('download'); e[e.length-1].click()")

源: http://de.slideshare.net/adamchristian/javascript-testing-via-selenium