在当前线程中创建WebDriver之后等待Selenium测试

时间:2018-10-12 12:58:38

标签: java selenium webdriver selenium-chromedriver headless

我一直在质疑无铬铬变体的硒测试。 有时测试什么都在等待,为什么要长时间10分钟? 我添加了40秒的测试超时时间。

15:41:54 INFO: Selenium WebDriver v. 3.14.0 build time: 2018-08-02T20:19:58.91Z
15:41:54 Oct 12, 2018 12:41:55 PM com.codeborne.selenide.impl.WebDriverThreadLocalContainer createDriver
15:41:54 INFO: Create webdriver in current thread 1: ChromeDriver -> ChromeDriver: chrome on LINUX (6332d1a2dee8e95f05da4130b99237f9)
15:51:54 [34mEmbed Failed timeout
15:51:54   (Session info: chrome=69.0.3497.100)
15:51:54   (Driver info: chromedriver=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),platform=Linux 3.10.0-862.14.4.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information)
15:51:54 Command duration or timeout: 0 milliseconds

硒设置:

    case "chrome":
        testBrowserName = "CH";
        WebDriverManager.chromedriver().setup();
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.addArguments("--disable-dev-shm-usage");
        chromeOptions.addArguments("--no-sandbox");
        chromeOptions.addArguments("--headless");
        chromeOptions.addArguments("--window-size=1920,1080");
        ChromeDriver driver = new ChromeDriver(chromeOptions);
        WebDriverRunner.setWebDriver(driver);
        break;

1 个答案:

答案 0 :(得分:0)

您还没有提到有关用例的详细信息,并且不清楚为什么您将测试仅用于 ChromeDriver 实现。

如果您使用ChromeDriver driver = new ChromeDriver();,将要创建的 ChromeDriver 实例将只能调用和执行由 ChromeDriver 实施并受<仅限em> Chrome浏览器。要与其他浏览器一起使用,您必须专门创建以下单个对象:

  • FirefoxDriver driver = new FirefoxDriver();
  • InternetExplorerDriver driver = new InternetExplorerDriver();

WebDriver界面

Selenium 角度来看, WebDriver接口类似于第三方浏览器供应商之类的协议,例如 Mozilla Chrome Internet Explorer Safari 等必须遵循并实现相同的功能。反过来,这将帮助最终用户使用公开的API编写通用代码并在所有可用的 Browsers 中实现功能,而无需进行任何更改。

您将在what is the difference between ChromeDriver and WebDriver in selenium?

中找到详细的讨论

解决方案

切换到 WebDriver界面,而不是使用 ChromeDriver 实施。根据当前情况,我们必须直接实例化 WebDriver接口的实现。当前的做法是,我们需要针对此接口编写自动化测试脚本,以便将来在需要时可以交换功能更全的浏览器。

示例:

case "chrome":
    testBrowserName = "CH";
    WebDriverManager.chromedriver().setup();
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.addArguments("--disable-dev-shm-usage");
    chromeOptions.addArguments("--no-sandbox");
    chromeOptions.addArguments("--headless");
    chromeOptions.addArguments("--window-size=1920,1080");
    WebDriver driver = new ChromeDriver(chromeOptions);
    WebDriverRunner.setWebDriver(driver);
    break;