Python Selenium send_keys() 方法上传重复文件

问题描述 投票:0回答:3
pdfs =[file1, file2, file3]
uploadButton = browser.find_element_by_xpath("//input[@type='file']")
for i in range(len(pdfs)):
   uploadButton.send_keys(pdfs[i])

我使用上面的代码在 ChromeDriver 中使用 send_keys() 上传多个文件。 在这里它将在第 1 次迭代中正常工作,在第 2 次迭代中它将上传 2 个文件,在第 3 次迭代中上传 3 个文件。在每次迭代中,都会上传重复文件。 我需要一个解决方案来使用 for 循环一个一个地上传文件而不重复。 我知道我们可以像这样一次上传所有文件

files = file1 + '\n' + file2 + '\n' + file3
uploadButton.send_keys(files)

但是我不想一次上传所有文件我必须在使用for循环中一个一个地上传。 任何人都可以使用 Python + Selenium 帮助我解决这个问题吗?

python selenium selenium-webdriver automation selenium-chromedriver
3个回答
0
投票

如果您的输入不允许多个文件,那么这是不可能的。您必须选择文件 1,上传,然后返回页面并为每个文件重复该过程。


0
投票

您是否尝试过在每次迭代中声明您的网络元素?

像这样?

pdfs =[file1, file2, file3]

for i in range(len(pdfs)):
    uploadButton = browser.find_element_by_xpath("//input[@type='file']")
    uploadButton.send_keys(pdfs[i])

0
投票

每次发送路径前使用clear()方法清除输入。 你的代码应该是这样的:

pdfs =[file1, file2, file3]
uploadButton = browser.find_element_by_xpath("//input[@type='file']")
for i in range(len(pdfs)):
   uploadButton.clear() # Add this line to clear the input
   uploadButton.send_keys(pdfs[i])
© www.soinside.com 2019 - 2024. All rights reserved.