在Selenium Hub中运行测试时如何上传文件

时间:2019-02-06 08:31:50

标签: selenium

我正在测试使用硒的Web应用程序,作为测试的一部分,我需要上传文档。当我单击名为“ filelabel”的按钮时,它会打开一个基于Windows的弹出窗口,用户可以浏览到ID并单击“打开”,然后附加文档。我正在使用Chrome驱动程序。

我尝试了2种方法

  1. Autoit:在本地运行测试时,我创建了一个exe,测试成功运行。但是我需要通过Jenkin构建在selenium hub中运行测试,并且我没有运行exe的权限。获取权限被拒绝错误

  2. 使用以下代码尝试了远程文件上传,并以'unable to focus element;'异常结束。我认为控件未转移到基于窗口的弹出窗口,因此我遇到了此异常

//远程上传

driver.findElement(By.name("fileLabel")).click();
driver.setFileDetector(new LocalFileDetector());

WebElement upload = driver.findElement(By.name("fileLabel"));

logger.logp(Level.INFO, this.getClass().getSimpleName(), "filelabel found", "file label found");

upload.sendKeys("./datafiles/myid.jpg");

logger.logp(Level.INFO, this.getClass().getSimpleName(), "id uploaded", "id uploaded");
  1. 我还阅读了有关使用robo类的信息。但再次看起来,我将必须通过绝对路径。不确定是否可以在集线器中使用

文件未上传。我正在寻找一种可行的解决方案,以便在selenium hub中运行测试时上传文件

1 个答案:

答案 0 :(得分:0)

使用方法2解决了该问题。由于我没有单击具有type = file的元素,因此无法关注元素异常。

然后使用下面的代码

driver.setFileDetector(new LocalFileDetector());
WebElement upload = driver.findElement(By.id("idDocumentFile"));
String currPath = System.getProperty("user.dir");
File imgFile = new File(currPath +"/datafiles/myid.pdf");
upload.sendKeys(imgFile.getAbsolutePath());