繁体   English   中英

如何远程运行TestNG Selenium测试?

[英]How can I run TestNG Selenium tests remotely?

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

如何实现允许我在服务器上使用发布/获取请求运行测试的系统?

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

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

然后,我下载了“ selenium-server-standalone-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");

而且有效。 谢谢大家的帮助!

不需要

实现一个系统,使我可以在服务器上使用发布/获取请求运行测试

除了这种情况,您真的要这么做。 Continuous_integration服务器提供了开箱即用的功能,而且还可以为您做更多的事情。 例如, Jenkins (非常适合基于Java的解决方案)提供了非常方便的Selenium插件 ,可帮助您管理Grid。

这里要注意的一件事-在服务器上启动集线器时,您应该传递其他参数,如下所示:

 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();
}

另外,还要确保geckodriver位于启动集线器/节点的目录中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM