我想使用send_keys()方法在网页上上传多个图像。 我尝试了这段代码。
browser = webdriver.Chrome()
browser.get(link)
file_list = []
file_list.append('D:\\01.jpg')
file_list.append('D:\\02.jpg')
file_list.append('D:\\03.jpg')
for img in file_list:
upload = browser.find_element_by_name('upload')
upload.send_keys(img)
此代码可以正常运行,但是可以上传6张图片。
我希望输出的图像是01.jpg,02.jpg,03.jpg
但是它给出的输出图像是01.jpg,01.jpg,02.jpg,01.jpg,02.jpg,03.jpg
答案 0 :(得分:0)
您可以在此处尝试合并find_element
和send_keys
语句。您的代码中没有任何内容表明为什么图像会被上传两次,因此这可能是网页本身的根本问题,以及它被编程为接受文件输入的方式。
from time import sleep
browser = webdriver.Chrome()
browser.get(link)
file_list = []
file_list.append('D:\\01.jpg')
file_list.append('D:\\02.jpg')
file_list.append('D:\\03.jpg')
for img in file_list:
print(img)
browser.find_element_by_name('upload').send_keys(img)
sleep(5)
如果img
仅打印3次,但是上传了6张图像,则这是网页问题而不是Selenium问题。我添加了5秒的显式睡眠,以使网页有一些时间来处理文件上载,这可能是此处问题的一部分。
您可以使用sleep(5)
将WebDriverWait
更改为某种ExpectedConditions
,以等待页面上的元素指示上传成功-如果您需要帮助为此,在您尝试自动执行的页面上查看HTML将是一个不错的起点。
希望这会有所帮助。