无论操作系统如何从项目文件夹上传文件(Windows或Unix)在Selenium Grid上执行测试时

时间:2016-12-19 20:21:43

标签: java selenium unix jenkins

我写了一个测试(Selenium WebDriver with java),我必须从OS文件资源管理器(上传窗口)上传文件。

我用过,

String path =System.getProperty("user.dir")+ File.separator +"TestDoc"+File.separator+"File.pdf"; 

它适用于我的本地(Windows机器),但是当我尝试使用Jenkins在AWS服务器上运行时会出错。

error: NullPointerException.

调试之后,我看到它是我的本地机器文件夹地址 (C:\Users\...\...\TestDoc\File.pdf)

有没有其他方法可以从项目文件夹上传文件,使用该特定机器的文件夹地址,无论如何?

2 个答案:

答案 0 :(得分:1)

如果您在网格上运行测试,并且文件的位置在远程计算机上,则在不同的OS计算机上执行不同的操作系统和测试,那么您应该让远程驱动程序知道需要上载的文件是驻留在本地机器而不是远程机器上。

    String path =System.getProperty("user.dir")+ File.separator +"FolderName"+File.separator+"File.pdf";
    WebElement El = driver.findElement(By.id("'fileUploadField'"));
    RemoteWebElement ele=(RemoteWebElement) ((RemoteWebDriver)baseSeleniumTest.driver).switchTo().activeElement();
    ele.setFileDetector(new LocalFileDetector()); 
    ele.sendKeys(path);

答案 1 :(得分:0)

你可以使用:

String path =System.getProperty("user.dir")+ File.separator +"FolderName"+File.separator+"File.pdf";
WebElement El = driver.findElement(By.id("'fileUploadField'"));
El.sendKeys(path);