我正在尝试运行以下代码。但是每次我运行一个新的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");
}
}
答案 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扩展程序可以打包或不打包。打包扩展名是带有.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实用程序可以识别它)。
打包(.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浏览器窗口的问题