我想通过send_keys()上传图像,但是它提供了不同的输出?

时间:2019-10-20 09:07:52

标签: python-3.x selenium

我想使用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

1 个答案:

答案 0 :(得分:0)

您可以在此处尝试合并find_elementsend_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将是一个不错的起点。

希望这会有所帮助。