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