2016-07-05 37 views
0

驱动程序,硒测试总是失败,此错误硒不承认与詹金斯

java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property 

,或者当我设置的驱动程序路径

not found /var/jenkins/.../C:/selenium/drivers/chromedrive 

我有遵循环境

  • 1运行在linux上的jenkins服务器和硒中枢

  • 在Windows上运行1个硒节点。

硒节点与后续的行运行

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" 

硒毂和节点可以看到对方。

Selenium GRID console

为什么我不能执行测试?看起来就像硒试图在集线器上执行,而不是在节点上执行。我如何配置不要求Chrome驱动程序的位置?

我的测试

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

我用一个属性文件

host.address = http://jbossserver:8080 
usuario.selenium.login = USER_SELENIUM 
usuario.selenium.password = 123123 
webdriver.path = C:/selenium/drivers/chromedriver 
webdriver.type = webdriver.chrome.driver 

回答

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

总结起来,我的错误是编写代码在远程硒节点上运行本地测试。

0

你应该在命令行引号内的参数。像这样:

java -Dwebdriver.chrome.driver="C:/selenium/drivers/chromedriver.exe"