在无头环境中使用Ubuntu上的Chrome运行Selenium测试

时间:2012-10-29 18:09:39

标签: java selenium

关于这个主题有很多帖子,但由于某些原因,我发现与Chrome没什么关系(似乎最近为无头添加了支持)。 测试使用浏览器在本地运行

  1. 是否可以从Java触发Xvfb显示,以便我可以在一个地方管理所有内容?我宁愿不必这样做:

    Xvfb:1-screen 0 1024x768x24&

  2. 通过命令行。运行显示器然后将其关闭是很有用的。

    1. SetEnvironmentProperty to ChromeDriver programatically是我发现的解决方案。
    2. 问题?我不能让它在Ubuntu机器上工作。

      我收到的错误是:

      /home/ubuntu/myproject/conf/chromedriver: 1: Syntax error: Unterminated quoted string
      

      我正在使用的测试类:

      import java.io.File;
      
      import org.openqa.selenium.By;
      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.chrome.ChromeDriver;
      import org.openqa.selenium.chrome.ChromeDriverService;
      
      import play.Logger;
      import utils.LocalInfo;
      
      import com.google.common.collect.ImmutableMap;
      
      public class TestCI {
      
          private WebDriver driver;
      
          @SuppressWarnings("deprecation")
          public TestCI(String url) {
      
              if (!LocalInfo.isEC2()) {
      
                  Logger.info("Running tests by opening a browser...");
      
                  System.setProperty("webdriver.chrome.driver", "conf/chromedriver");
      
                  setWebDriver(new ChromeDriver());
      
              } else {
      
                  Logger.info("Running tests headlessly...");
      
                  String xPort = System.getProperty("Importal.xvfb.id", ":1");
      
                  ChromeDriverService service = new ChromeDriverService.Builder()
                          .usingChromeDriverExecutable(new File("conf/chromedriver"))
                          .usingAnyFreePort()
                          .withEnvironment(ImmutableMap.of("DISPLAY", xPort)).build();
      
                  setWebDriver(new ChromeDriver(service));
      
              }
      
              getWebDriver().get("http://www.google.com");
      
              try {
                  someUITest();
              } catch (Exception e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
      
              getWebDriver().close();
      
          }
      
          public WebDriver getWebDriver() {
              return driver;
          }
      
          public void setWebDriver(ChromeDriver driver) {
              this.driver = driver;
          }
      
          public void someUITest() throws Exception {
      
              getWebDriver().findElement(By.name("q"));
      
          }
      
      }
      

1 个答案:

答案 0 :(得分:0)

我切换到Linux的chromedriver,它摆脱了未终止的引用字符串错误http://code.google.com/p/chromedriver/downloads/list