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

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

任何帮助将不胜感激。

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

http://img3.mukewang.com/62b3d03b0001b95405780055.jpg

代码试验:


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");


    }


}

http://img3.mukewang.com/62b3d04a0001225e05240180.jpg

开满天机
浏览 895回答 3
3回答

隔江千里

当您每次创建一个新的ChromeDriver实例时执行您的代码,这会产生一个新的Chrome 浏览器会话。此功能是按照设计。更好的方法是在每次运行Test Executiondriver.quit()后在方法内调用以优雅地tearDown(){}关闭和销毁WebDriver和Web Browser实例。你可以在这里找到详细的讨论。虽然这可以解决多个Chrome 浏览器窗口的问题,但您仍然不会在新会话中登录。要登录,您需要使用特定的Chrome 配置文件并存储cookie并在以后重复使用。您将在此讨论中找到有关如何创建和打开新 Chrome 配置文件的详细讨论。要使用您已安装的扩展,您需要打包/解压缩它们并使用ChromeOptionsclass.Chrome 扩展程序Chrome 扩展程序可以打包或解包。打包扩展名是具有 .crx 扩展名的单个文件。未打包的扩展是一个包含扩展的目录,包括一个manifest.json文件。要打包未打包的扩展程序,请使用中的打包按钮chrome://extensions或使用 Chrome(Windows 示例):chrome.exe --pack-extension=C:\path\to\unpacked\extension --pack-extension-key=C:\myext.pem请参阅扩展文档以了解其他更自动化的方法。要解压打包的扩展,只需解压缩文件(您可能需要将文件从 重命名为.crx,以便.zipzip 实用程序识别它)。通过 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);

喵喵时光机

如果您只想在最后关闭窗口,您可以致电driver.Quit();那应该关闭它并清理。

不负相思意

使用最新的 Selnium 4 Java jar 和 Selenium 服务器 jar 解决了我的额外 Chrome 浏览器窗口的问题https://www.selenium.dev/downloads/
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java