在弹窗中使用selenium上传文件

0 投票
1 回答
1802 浏览
提问于 2025-04-18 13:19

我在论坛上搜索了一些信息,但没有找到完全符合我遇到的问题的内容。我正在自动化上传文件到一个网站。不幸的是,这个网站的“浏览”按钮的ID是用计数器生成的。通过使用Selenium和Firebug,我找到了一种识别这个按钮的其他方法。我把脚本导出到Python中,添加了一些变量,以便进行自动化。不过,点击浏览按钮后会弹出一个窗口,让我选择文件。我的脚本是这样开始的……

driver.find_element_by_xpath("//*[@type=\"file\"]").click()
driver.find_element_by_id("upfile_1405369589849").clear()
driver.find_element_by_id("upfile_1405369589849").send_keys("path\\file")
driver.find_element_by_id("upload_button").click()

在这里,上传按钮被点击后,弹出窗口出现,但它就在那里嘲笑我。我尝试用xpath代替ID,但没有成功。我也试过以下这些……

driver.findElement(By.id()).send_keys("path\\file")

还尝试了这个……

driver.find_element_by_id("upfile_*").send_keys("path\\file")

我似乎无法让这个窗口响应,除了它那嘲讽的目光。任何帮助我解决这个问题的建议都非常感谢。

1 个回答

1

这件事是做不到的。一个变通的方法是让开发团队为你修改应用程序。可以在页面中添加一个JavaScript函数,这样你就可以直接把文件名传给处理程序,而不需要点击浏览按钮。

如果你无法做到这一点,我建议你看看Sikuli,这个工具可以让你通过识别图案(截图)来与窗口提示进行互动。

撰写回答