Python xpath的元素数
我有一个包含许多下载链接的表格网页 我想让selenium点击最后一个: 表: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
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()