我有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");
它的工作。感谢大家,谁帮助!
没有必要
实现一个允许我在服务器上使用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的同一目录中。