为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开满天机 2022-06-23 10:29:59
我正在尝试运行以下代码。但每次我运行一个新的 chrome 窗口时都会打开。如何解决这个问题。此外,打开的新 chrome 实例未登录,因此我无法使用已安装的扩展程序。有什么办法可以解决这个问题?任何帮助将不胜感激。我提供了相同的屏幕截图:代码试验: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");    }}
查看完整描述

3 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

当您每次创建一个新的ChromeDriver实例时执行您的代码,这会产生一个新的Chrome 浏览器会话。此功能是按照设计

更好的方法是在每次运行Test Executiondriver.quit()后在方法内调用以优雅地tearDown(){}关闭和销毁WebDriverWeb 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);


查看完整回答
反对 回复 2022-06-23
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

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

driver.Quit();

那应该关闭它并清理。


查看完整回答
反对 回复 2022-06-23
?
不负相思意

TA贡献1777条经验 获得超10个赞

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

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


查看完整回答
反对 回复 2022-06-23
  • 3 回答
  • 0 关注
  • 890 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信