5

我有一个包含许多下载链接的表格的网页,我想让 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()]")

或者是其他东西

4

3 回答 3

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 是复数

于 2017-09-13T08:20:35.547 回答
1

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

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

实现元素的数量,然后遍历then,使用

something.xpath(//a[position()=n])

在哪里

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

于 2013-09-10T17:47:39.563 回答
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

于 2013-08-29T21:24:54.247 回答