【发布时间】:2019-10-29 16:44:54
【问题描述】:
我必须自动化应用程序并且正在 Windows 机器上工作。
点击某个按钮后,弹出窗口会打开,我可以在其中选择文件或输入路径。使用Robot class,上传功能可以正常工作。但最后脚本必须通过 Jenkins 在 Linux 节点上运行,而我无法访问这些节点。我有 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