为什么Selenium Webdriver每次运行脚本时都会打开新窗口,以及如何修复它?

时间:2019-02-17 14:12:23

标签: java selenium google-chrome google-chrome-extension selenium-chromedriver

我正在尝试运行以下代码。但是每次我运行一个新的chrome窗口时都会打开。如何解决此问题。另外打开的新chrome实例未登录,因此我无法使用我已经安装的扩展程序。有什么办法解决这个问题?

任何帮助将不胜感激。

我提供了相同的屏幕截图:

new chrome instances

代码试用:

package com.webdriver;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class WebElements {

    public static void main(String[] args) {

        WebDriver driver = new ChromeDriver();
        driver.get("http://www.google.com");

    }

}

base instance 。 。 new instance not logged in

3 个答案:

答案 0 :(得分:1)

如果您只希望窗口在最后关闭,您可以致电

$date

这应该将其关闭并清理。

答案 1 :(得分:1)

每次执行代码时,都会创建一个新的 ChromeDriver 实例,该实例会产生一个新的 Chrome浏览器会话。此功能根据设计

更好的方法是在driver.quit()方法内调用 tearDown(){} 以关闭并销毁 WebDriver Web浏览器< / em>实例在每次运行 Test Execution 后正常运行。您可以找到详细的discussion here

尽管这可以解决多个 Chrome浏览器窗口的问题,但您仍不会在新会话中登录。要登录,您需要使用特定的 Chrome配置文件,并存储 cookies ,以后再使用。您将在this discussion中找到有关如何创建和打开新的Chrome配置文件的详细讨论。

要使用已安装的扩展,您需要打包/解压缩它们并使用ChromeOptions类。


Chrome Extensions

Chrome扩展程序可以打包或不打包。打包扩展名是带有.crx扩展名的单个文件。未压缩的扩展名是包含扩展名的目录,包括一个manifest.json文件。

要打包未打包的扩展程序,请使用chrome://extensions中的“打包”按钮或使用Chrome(以Windows为例):

chrome.exe --pack-extension=C:\path\to\unpacked\extension --pack-extension-key=C:\myext.pem 

请参见extensions docs,以了解实现自动化自动化的其他方法。要解压缩打包的扩展名,只需解压缩文件(您可能需要将文件从.crx重命名为.zip,以便您的zip实用程序可以识别它)。

通过ChromeDriver使用扩展程序

  • 打包(.crx文件):

    ChromeOptions options = new ChromeOptions();
    options.addExtensions(new File("/path/to/extension.crx"));
    WebDriver driver = new ChromeDriver(options);
    
  • 解压后的(目录):

    ChromeOptions options = new ChromeOptions();
    options.addArguments("load-extension=/path/to/extension");
    WebDriver driver = new ChromeDriver(options);
    

答案 2 :(得分:0)

使用最新的Selnium 4 Java jar和Selenium服务器jar解决了我多余的Chrome浏览器窗口的问题

https://www.selenium.dev/downloads/