在当前线程中创建网络驱动程序后,正在Selenium测试中等待



我一直被问及铬无头变体的硒测试。有时候测试在等待什么,为什么它有很长的时间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;

您没有详细提到您的用例,也不清楚为什么要使用将测试限制为ChromeDriver实现。

如果使用ChromeDriver driver = new ChromeDriver();,将创建的ChromeDriver实例将只能调用ChromeDriver实现的方法并对其执行操作,并且仅受Chrome浏览器支持。要使用其他浏览器,您必须专门创建如下单个对象:

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

WebDriver接口

Selenium的角度来看,WebDriver接口类似于第三方浏览器供应商(如MozillaChromeInternet ExplorerSafari)必须遵守并实施的协议。这反过来将帮助最终用户使用公开的API编写通用代码,并在所有可用的浏览器中实现功能,而不做任何更改。

您将在ChromeDriver和WebDriver在硒方面的区别中找到详细的讨论?

解决方案

与其使用ChromeDriver实现,不如切换到WebDriver接口。根据当前场景,我们必须直接实例化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;

相关内容

最新更新