Python xpath的元素数

Python xpath的元素数,python,xpath,selenium,web2py,Python,Xpath,Selenium,Web2py,我有一个包含许多下载链接的表格网页 我想让selenium点击最后一个: 表: item1 Download item2 Download item3 Download selenium必须单击下载下一步 我使用xpath查找所有元素,然后以这种方式获取返回数组或dict的大小 x = bot._driver.find_element_by_xpath("//a[contains(text(),'Download')]").size() 但我总是犯这样的错误 TypeError: 'dict

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

表:

item1 Download
item2 Download
item3 Download
selenium必须单击下载下一步

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

x = bot._driver.find_element_by_xpath("//a[contains(text(),'Download')]").size()
但我总是犯这样的错误

TypeError: 'dict' object is not callable
我尝试使用
get\u xpath\u count
methode,但该方法在python中的selenium中不存在

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

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


或者别的什么

最好的方法是使用JavaScript并按类名查找元素

self.bot._driver.execute_script("var e = document.getElementsByClassName('download'); e[e.length-1].click()")
资料来源:

尽管Python中不存在
get\u xpath\u count(“xpath\u表达式”)
,但您可以使用

len(bot._driver.find_element_by_xpath("//a[contains(text(),'Download')]"))
要获得元素的数量,然后使用

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


n
使用find\u elements\u by\u xpath获取相关元素的数量

count = len(driver.find_elements_by_xpath(xpath))
然后单击最后一个元素:

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

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

您可以打印
bot.\u driver.find_element_by_xpath(//a[contains(text(),'Download')])的结果吗
?这是一种财产。如果要查找与
xpath
匹配的所有项目,请使用
find_elements\u by_xpath
(注意
s
)。@kroolik,是的,它现在与“s”一起工作,但返回空列表,
size()
不起作用,但
len(x)
起作用。另一方面,
bot.\u驱动程序。通过xpath((//a[contains(text(),'Download')])[5]”查找\u元素。单击()
而不使用“s”可以工作!那么为什么
find_elements_by_xpath
返回空列表:/I使用find_elements_by_xpath而不是find_element_by_xpath。方法有复数。非常感谢,这对我有帮助
elem = driver.find_element_by_xpath(xpath[count])
elem.click()