gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:55:16 24 4
gpt4 key购买 nike

我正在尝试运行以下代码。但每次我运行时都会打开一个新的 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

最佳答案

每次创建新的 ChromeDriver 实例时执行代码,都会生成新的 Chrome 浏览器 session 。此功能按照设计

更好的方法是在 tearDown(){} 方法中调用 driver.quit() 来关闭并销毁 <每次运行测试执行后,em>WebDriver 和 Web 浏览器 实例都会正常运行。详细可以找discussion here .

虽然这可以解决多个 Chrome 浏览器窗口的问题,但您仍然无法在新 session 中登录。要登录,您需要使用特定的Chrome配置文件并存储cookie并在以后重复使用。您将在 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);

关于java - 为什么 Selenium Webdriver 每次运行脚本都会打开新窗口以及如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54734087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com