硒-Java-ChromeDriver:打开空白的“数据”;在某些情况下需要打开另一个运行实际测试的Chrome窗口?

时间:2018-11-20 15:55:40

标签: java selenium selenium-chromedriver

因此,我是一名实习生,负责使用Selenium开发各种测试用例。但是,在大多数情况下,我开发的作品是可行的:

对于我的一些测试用例,一个空白的“数据”;窗口打开,然后它将在运行我的实际测试用例的情况下打开另一个窗口。它并没有真正阻止我的测试用例正常运行,但是它打开的所有其他窗口都令人烦恼。

我已经彻底搜索了stackoverflow以及其他论坛,一些人找到了更新chromedriver的解决方案(无论是我做过还是不行),其他人在此处发布的关于其实际测试用例窗口的问题是空白数据;而不是我遇到的问题。

相关信息:

  • 我正在使用JUnit,并在我的@Before注释中实例化镶边 驱动程序对象,因为我在每种情况下都关闭了驱动程序(为了能够 即使它们在同一个测试类中,也要独立运行它们)。

此额外的空白数据;我完成上述操作后,窗口才出现。

  • 我在每个测试用例的开头都做了一个driver.get(URL)

如果某人有解决方案,可以请他们发布并解释原因,因为我不仅想要解决方案,还想了解其背后的根本原因。

预先感谢一堆!

2 个答案:

答案 0 :(得分:0)

尝试详细记录日志,至少可以查看是否是chromedriver打开两个窗口的同一实例。

System.setProperty("webdriver.chrome.verboseLogging", "true");

如果它是单独的chromedriver实例,则在Windows上的任务管理器中,您将看到两个chromedriver.exe实例,在Mac上的Activity Monitor中,您将看到chromedriver中的两个实例。然后,您可以将其范围缩小到您的测试用例之一实际上无法运行或立即失败。

答案 1 :(得分:0)

创建新的ChromeDriver()时,将打开新的空白“数据”窗口。因此,如果您看到两个窗口,则意味着新的ChromeDriver()被执行了两次。

在创建 @Before 之前,您可能已经在代码中留下了一些 driver = new ChromeDriver(); 方法。

因此,在运行测试时,将执行两次此代码( driver = new ChromeDriver(); )。在@Before方法中,然后在代码中的其他地方。

尝试在IDE中使用搜索功能查找所有出现的 新ChromeDriver()

否则,也许您的@Before方法执行两次。创建新的ChromeDriver()时,将打开新的空白“数据”窗口。因此,如果您看到两个窗口,则意味着新的ChromeDriver()被执行了两次。