【问题标题】:How to upload a file in popup using Selenium remote webdriver on linux machine如何在 linux 机器上使用 Selenium 远程 webdriver 在弹出窗口中上传文件
【发布时间】:2019-10-29 16:44:54
【问题描述】:

我必须自动化应用程序并且正在 Windows 机器上工作。

点击某个按钮后,弹出窗口会打开,我可以在其中选择文件或输入路径。使用Robot class,上传功能可以正常工作。但最后脚本必须通过 Jenkins 在 Linux 节点上运行,而我无法访问这些节点。我有 2 个问题

  1. 脚本在无头浏览器上运行,这里如何处理文件上传?

  2. 如果我设置options.setHeadless(false);,chrome浏览器会在前台运行吗?如果是,那么这里如何处理文件上传?(因为我没有节点访问权限所以无法检查)

【问题讨论】:

  • 文件上传应该以同样的方式处理无头与非无头。因此,如果它在常规 Chromedriver 中工作,它应该在无头模式下工作。我不建议将 headless 设置为 false,因为这可能会导致意外的浏览器大小问题,具体取决于 VM 的配置。 Headless 将绕过这些问题。您在使用这种方法时遇到错误吗?
  • 尝试使用uploadElement.sendKeys("C:\\filepath"); 上传文件否则你也可以使用 auto
  • @Christine.. 当我没有将 headless 设置为 false 时,使用机器人类抛出 java.awt.AWTException: headless environment at java.awt.Robot.(Robot.java .
  • @Rock... 没有可以设置路径的文本类型的字段。只有弹出窗口是选项。
  • 这将是一个隐藏的输入字段。这就是大多数文件上传的处理方式——当您从计算机中选择文件时,实际上是将文件路径文本发送到隐藏的<input type='file'/> 元素中。但是,您的错误消息特定于机器人,而不是 Selenium。奇怪的是您的代码可以在浏览器中使用,但不能在无头模式下使用。对于特定于机器人的帮助论坛来说,这可能是一个更好的问题 - 如果没有 Selenium 异常,则很难进行故障排除。

标签: linux selenium selenium-grid remotewebdriver


【解决方案1】:

尝试使用可以存储在 VBS 文件中的简单 Shell 脚本在弹出窗口中上传文件,然后在单击文件上传按钮以将路径输入窗口弹出窗口后调用此文件

示例外壳代码

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.SendKeys "Your complete file path here"

WshShell.SendKeys "{ENTER}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2017-11-24
    • 2016-08-12
    • 1970-01-01
    相关资源
    最近更新 更多