我正在尝试创建代码,该代码将单击网页上的多个链接,从而依次下载文件。但是,我写了一个包含所有链接的XPath。尝试单击时出现此错误:“ click()接受1个位置参数,但给出了2个”。
是否可以使用硒中的.click()函数单击所需XPath中的所有链接?
这是我尝试使用的10个文件:
browser.find_element_by_xpath("//a[starts-with(@href,'sys_attachment.do') and @class='linked formlink']").click('href')
是否有更好的方法通过XPath下载所有这些文件?谢谢。
答案 0 :(得分:0)
如果要查找许多元素,请在单词find_elemenets_...
中使用s
和elements
,并获得包含许多元素的列表。然后,您必须使用for
循环才能在每个元素上单独使用click()
(不带参数)。
all_items = browser.find_elements_by_xpath("//a[starts-with(@href,'sys_attachment.do') and @class='linked formlink']")
for item in all_items:
item.click()
问题是click
更改页面时,因为项目停止存在,您必须返回,再次查找所有项目,然后单击列表中的下一个元素-但您必须记住以前单击的项目的索引。
答案 1 :(得分:0)
您应该使用find_elements_by
而不是element
,以便可以遍历元素列表,然后单击每个元素,例如:
clickList = browser.find_elements_by_xpath("//a[starts-with(@href,'sys_attachment.do') and @class='linked formlink']")
for count, elem in enumerate(clickList):
# I am refreshing the list in case the DOM is changed
currentList = browser.find_elements_by_xpath("//a[starts-with(@href,'sys_attachment.do') and @class='linked formlink']")
currentList[count].click()