当我执行jenkins作业时,selenium测试总是因此错误而失败
realloc
或我设置驱动程序路径
java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property
我有以下环境
在Linux上运行的1个jenkins服务器和selenium hub
在Windows上运行1个selenium节点。
selenium节点正在运行,后面的行
not found /var/jenkins/.../C:/selenium/drivers/chromedrive
Selenium hub和节点可以互相看到。
为什么我无法执行测试?看起来像selenium试图在集线器上执行,而不是在节点上执行。如何配置为不要求Chrome驱动程序位置?
我的测试
java -Dwebdriver.chrome.driver=C:/selenium/drivers/chromedriver.exe -jar selenium-server-standalone-2.53.1.jar -port 5556 -role node -hub http://192.168.15.99:4444/grid/register -browser "browserName=chrome, version=ANY, maxInstances=10, platform=WINDOWS"
我使用属性文件
public class TesteSelenium{
private static final String APLICATION_CONTEXT = "/SYSA";
WebDriver driver;
HomePage home;
@Before
public void setUp() {
Properties p = PropertiesUtil.getProperties();
File file = new File(p.getProperty("webdriver.path"));
System.setProperty(p.getProperty("webdriver.type"), file.getAbsolutePath());
driver = new ChromeDriver();
driver.get(p.getProperty("host.address")+APLICATION_CONTEXT);
LoginPage login = PageFactory.initElements(driver, LoginPage.class);
login.setUsuarioTextField(p.getProperty("usuario.selenium.login"));
login.setSenhaPasswordField(p.getProperty("usuario.selenium.password"));
home = login.submit();
}
@After
public void finish() {
driver.close();
}
答案 0 :(得分:0)
您应该在命令行中将参数放在引号内。像这样:
java -Dwebdriver.chrome.driver="C:/selenium/drivers/chromedriver.exe"
答案 1 :(得分:0)
远程运行Selenium测试的代码略有不同。
public void setUp() throws MalformedURLException {
Properties p = PropertiesUtil.getProperties();
//File file = new File(p.getProperty("webdriver.path"));
//System.setProperty(p.getProperty("webdriver.type"), file.getAbsolutePath());
DesiredCapabilities capability = DesiredCapabilities.chrome();
//driver = new ChromeDriver();
WebDriver driver = new RemoteWebDriver(new java.net.URL("http://seleniumHubIp:4444/wd/hub"), capability);
driver.get(p.getProperty("host.address")+APLICATION_CONTEXT);
LoginPage login = PageFactory.initElements(driver, LoginPage.class);
login.setUsuarioTextField(p.getProperty("usuario.selenium.login"));
login.setSenhaPasswordField(p.getProperty("usuario.selenium.password"));
home = login.submit();
}
总结一下,我的错误就是编写代码来在远程selenium节点上运行本地测试。