【发布时间】:2023-04-02 01:14:01
【问题描述】:
我正在尝试将 ChromeOptions 传递给我的驱动程序以允许弹出窗口。我正在使用带有 @BeforeClass、@Test 和 @AfterClass 注释的 TestNG。我正在尝试启用弹出窗口,并且使用以下方法成功地做到了。
@BeforeClass
public void setUp(){
if (driver instanceof ChromeDriver){
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-popup-blocking");
driver = new ChromeDriver(options);
}
}
虽然这确实有效,但它会打开 webdriver,然后打开另一个带有选项的驱动程序。我不想弹出两个 webdrivers.. 我只想将这些选项传递给第一个 webdriver!我正在使用 xml 和 TestExtension 类运行这些驱动程序,其中驱动程序被实例化并且不想更改该类。有没有办法将 driver = new ChromeDriver(options) 更改为只传递这些选项的东西?谢谢!
【问题讨论】:
-
您必须在代码中的其他位置调用
new ChromeDriver()。在哪里? -
@SiKing 正确,我们使用一个单独的类 TestExtension 来处理所有的初步设置、浏览器堆栈参数等。这是它被实例化的地方。但是我不想改变它..
-
每次调用
new ...Driver(),都会打开一个新的浏览器。这就是 Selenium 的工作原理! -
@SiKing 我知道这一点,这就是为什么我试图找到一种方法来传递这些选项......就像有一种方法可以做 driver.addOptions() 或其他东西而不是使用传入的选项创建一个新驱动程序。
-
这些选项在启动时传递给浏览器。 Selenium 与这些无关。
标签: java selenium webdriver testng chrome-options