[英]Selenium TestNG: How can I run selenium tests from a compiled jar using TestNG?
[英]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.