0

我正在尝试将 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) 更改为只传递这些选项的东西?谢谢!

4

1 回答 1

1

如果不更改 TestExtension 类,您将无法做到这一点。原因是您传递的任何参数都会传递给在实例化时生成的浏览器。在那之后,就没有办法改变任何东西来改变生成的浏览器的行为了。您将需要更改您的 TestExtension 类,然后提供一种机制,在该机制中,用户基本上也可以注入他们自己的功能,TestExtension 在生成浏览器之前会考虑这一点。它可以像传入类的完全限定包名一样简单,调用时可以实例化您通过 JVM 参数传递的功能对象。

您的 TestExtension 类基本上会检查 JVM 参数是否有任何正在传递的自定义功能,如果找到,它会将这些功能也合并到它的功能中,然后生成浏览器。这是这样做的唯一方法。

于 2016-03-01T05:27:40.140 回答