Selenium不认识jenkins的司机

时间:2016-07-05 21:40:37

标签: java selenium jenkins

当我执行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 GRID console

为什么我无法执行测试?看起来像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();
    } 

2 个答案:

答案 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节点上运行本地测试。