【问题标题】:Uploading a file into a popup window with selenium使用 selenium 将文件上传到弹出窗口
【发布时间】:2014-07-14 21:51:14
【问题描述】:

我搜索了论坛并找到了一些有关此的信息,但与我面临的问题并不完全一致。我正在自动将文件上传到网站。不幸的是,该网站使用计数器作为“浏览”按钮的 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")

除了嘲弄的眩光外,我似乎无法让窗口做出响应。非常感谢任何有助于消除这种情况的帮助。

【问题讨论】:

  • 当您发送密钥时,文件元素会填充路径?
  • 弹出窗口是标准浏览器文件上传弹出窗口还是由 HTML/JavaScript 创建的?有时甚至还有基于 Flash 的上传对话。您只能通过 Selenium 访问 HTML/JavaScript 元素。
  • @Sebastian 弹出窗口是从操作系统(windows)生成的。刚刚有人发帖说我需要一个辅助应用来完成这项工作,所以我将开始调查。
  • @Amey 这就是它应该做的。有人告诉我,这对于操作系统生成的窗口来说是不可能的,所以我将采取不同的方向。

标签: python selenium xpath


【解决方案1】:

这是不可能的。一种解决方法是让开发团队为您修改 AUT。在页面中添加一个 javascipt 函数,该函数将允许您将文件名传递给处理程序,而无需单击浏览按钮。

如果您不能这样做,我建议您查看Sikuli,这将允许您使用要与之交互的模式识别(屏幕截图)与 Windows 提示进行交互。

【讨论】:

  • 谢谢你。至少我不会再用头撞墙了。我会调查 Sikuli。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-31
  • 2021-08-29
  • 1970-01-01
  • 2013-02-03
相关资源
最近更新 更多