我正在测试使用硒的Web应用程序,作为测试的一部分,我需要上传文档。当我单击名为“ filelabel
”的按钮时,它会打开一个基于Windows的弹出窗口,用户可以浏览到ID并单击“打开”,然后附加文档。我正在使用Chrome驱动程序。
我尝试了2种方法
Autoit
:在本地运行测试时,我创建了一个exe,测试成功运行。但是我需要通过Jenkin构建在selenium hub中运行测试,并且我没有运行exe的权限。获取权限被拒绝错误
使用以下代码尝试了远程文件上传,并以'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");
文件未上传。我正在寻找一种可行的解决方案,以便在selenium hub中运行测试时上传文件
答案 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());