当前位置: 首页 > 知识库问答 >
问题:

在selenium中使用robot类上传文件在远程机器上运行良好,但在远程连接关闭时失败

秦信瑞
2023-03-14

我在SeleniumWebDriver中使用Robot类创建了一个文件上传脚本。它工作正常,脚本按预期执行。现在,自动化设置在服务器上完成,并在jenkins上安排一个作业定期执行。当远程桌面连接保持打开时,脚本可以正常执行,但当连接最小化/终止时,文件上载失败。有人能帮忙吗?当远程连接最小化/终止时,robot api无法定位元素的原因。

如果您可以提供其他选项在远程服务器上执行此文件上载,这将非常有用

以下是HTML代码:

<label ng-if="comp.allowmultiple!=1" ng-click="bind_click(comp.code,comp.allowmultiple)" id="singleupload_label" class="browse ng-scope" ng-show="canShow(comp.code, comp.allowmultiple)">Click to Browse

<input name="file_upload" data-code="332" id="singleupload" class="inputStyle fixview filingUpload hidden " type="file"> 
Robot robot = new Robot();
Thread.sleep(10000);
robot.mouseMove(2,130);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
Thread.sleep(5000);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);

共有1个答案

高才
2023-03-14

如果输入类型为文件,即。

<input type="file" id="upload">

您可以直接使用SendKeys

driver.findElement(By.id("upload")).sendKeys("File Path");
 类似资料:
  • 我想在远程服务器上上传文件,目前我只能在本地机器上上传。下面是我的代码 提前感谢!

  • 机器A和B之间的通信工作良好。我可以运行像或这样的命令,它会给出预期的结果: 我听说过,但还没有尝试过,但据我所知,这并不能解决我的问题。 有什么方法可以直接使用来实现这一点。解决办法可能是使用连接到远程主机,并直接从远程主机使用客户机,但我希望尽可能避免这种解决方案。 在上运行,而不是在本地计算机上运行。

  • 感谢您抽出时间阅读我的问题-我正在使用EclipseIDE。我希望Jsoup连接https url-https://www.icegate.gov.in/使用 但它在线程“main”javax中给出了错误,而当我对其他https(如linkedin)使用相同的代码时,它就工作了。。。我不知道如何解决这个问题。 我获得了该网站的证书,并安装在我的jre/lib/security文件夹中,但它对我也没

  • 我开发了一个React应用程序,它使用Laravel作为API。我已经通过Passport添加了登录,并且已经相当成功地使用了个人访问客户端方法。我可以添加新用户和令牌,我可以撤销令牌,我可以重置密码...所有的API调用(除了登录和注册)都由API中间件保护,它可以工作。如果我从任何这些调用的头中删除,则由于->middleware('auth:api')包装器,它将返回401未经验证。 一切都

  • 问题内容: 是否可以(直接使用命令或API)从远程主机启动容器? 假设我有两台具有不同体系结构的机器:-A是一台机器-B是一台机器 我想使用我的A机器在B机器上运行一个容器。起初,我认为可以使用以下命令: 但这个命令实际上拉图像,并试图在其中一些最终的机器运行它的原因很明显,你不能运行的图像所特有的一种机器。 机器A和B之间的通信正常。我可以运行诸如或的命令,它可以给我预期的结果: 我听说过并且还

  • 我在远程机器上使用Jupyter笔记本,通过ssh-l8000:localhost:8888登录 但是:我无法关闭ssh连接。键入退出不会关闭它(只是让我等待),如果我通过ctrl-c强制退出,浏览器中的笔记本将失去与远程计算机的连接。 我是不是搞错了?或者我确实需要建立ssh连接,以便浏览器中的笔记本保持连接?