提问者:小点点

如何远程运行TestNG Selenium测试?


我有Java带有TestNG测试和Selenium WebDriver的项目。目前,我只能从我的IDE在本地运行它们。

如何实现一个允许我在服务器上使用post/get请求运行测试的系统?

例如,一个带有按钮的页面:在按钮单击时,测试应该开始在服务器上执行,所有WebDriver操作,当它完成时,我会收到一个答案。

起初,我尝试从命令行调用我的testng. xml。它起作用了,但看起来命令行不是,我可以通过简单的FirefoxDriver远程使用什么,所以我开始研究“RemoteWebDriver”功能。

然后我下载了“selenium-server-独立-3.4.0”并启动了服务器和节点,但每次脚本都以异常结束:

org.openqa.selenium.WebDriverException: The path to the driver executable must be set by the webdriver.gecko.driver system property

我添加了一个必需的属性,但它仍然不起作用(同样的问题)。这是一段导致异常的代码:

@Test
public static void main() throws Exception {
    URL server = new URL("http://127.0.0.1:4444/wd/hub");
    DesiredCapabilities capabilities = DesiredCapabilities.firefox();
    System.out.println("Connecting to " + server);
    WebDriver driver = new RemoteWebDriver(server, capabilities);
    System.setProperty("webdriver.gecko.driver", "geckodriver.exe");
    driver.get("http://www.google.com");
    driver.quit();
}

如您所见,系统属性已设置(geckodriver. exe存在于目录中,可以正常使用FirefoxDriver,但不适用于RemoteWebDriver)。

我不明白我做错了什么,甚至不确定我是否在朝着正确的方向前进。你能帮帮我吗?

尝试添加参数,由@ekostadinov提出。以下是我如何启动集线器和节点:

java -Dwebdriver.gecko.driver="geckodriver.exe" -jar lib\selenium-server-standalone-3.4.0.jar -role hub

java -jar lib\selenium-server-standalone-3.4.0.jar -role node  -hub http://localhost:4444/grid/register

仍然不起作用,但异常不同:

org.openqa.selenium.SessionNotCreatedException: Unable to find a matching set of capabilities

更新

改变了这个

DesiredCapabilities capabilities = DesiredCapabilities.firefox();

对这个

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setBrowserName("firefox");

它的工作。感谢大家,谁帮助!


共2个答案

匿名用户

没有必要

实现一个允许我在服务器上使用post/get请求运行测试的系统

除了在这种情况下,你真的想。Continuous_integration服务器为你做所有这一切,还有更多,开箱即用。例如Jenkins(非常适合基于JAVA的解决方案)提供了非常方便的Selenium插件,它可以帮助你管理网格。

这里需要注意的一件事-在服务器上启动Hub时,您应该传递额外的参数,如下所示:

 java -Dwebdriver.chrome.driver="/full/path/to/chromedriver" -Dwebdriver.gecko.driver="/full/path/to/geckodriver" -jar selenium-server-standalone-3.4.0.jar -role hub

匿名用户

尝试将这行代码移到实例化驱动程序的位置上方:

System.setProperty("webdriver.gecko.driver", "geckodriver.exe");

就像这样

@Test
    public static void main() throws Exception {
    URL server = new URL("http://127.0.0.1:4444/wd/hub");
    DesiredCapabilities capabilities = DesiredCapabilities.firefox();
    System.out.println("Connecting to " + server);
    System.setProperty("webdriver.gecko.driver", "geckodriver.exe");        
    WebDriver driver = new RemoteWebDriver(server, capabilities);
    driver.get("http://www.google.com");
    driver.quit();
}

还要确保geckoriver位于您启动hub/node的同一目录中。