gpt4 book ai didi

java - 传递 ChromeOptions 而不实例化新的 WebDriver

转载 作者:行者123 更新时间:2023-12-01 10:19:27 26 4
gpt4 key购买 nike

我正在尝试将 ChromeOptions 传递给我的驱动程序以允许弹出窗口。我正在将 TestNG 与 @BeforeClass、@Test 和 @AfterClass 注释一起使用。我正在尝试启用弹出窗口,并且使用以下方法成功地做到了这一点。

@BeforeClass
public void setUp(){
if (driver instanceof ChromeDriver){
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-popup-blocking");
driver = new ChromeDriver(options);
}
}

虽然这确实有效,但它会打开网络驱动程序,然后打开另一个带有选项的网络驱动程序。我不想弹出两个网络驱动程序。我只想将这些选项传递给第一个网络驱动程序!我使用 xml 和 TestExtension 类运行这些驱动程序,其中驱动程序被实例化并且不想更改该类。有没有办法将 driver = new ChromeDriver(options) 更改为仅传递这些选项的内容?谢谢!

最佳答案

如果不更改 TestExtension 类,则无法执行此操作。原因是您传递的任何参数都会传递到实例化时生成的浏览器。之后,就无法更改任何内容来更改生成的浏览器的行为。您需要更改 TestExtension 类,然后提供一种机制,用户基本上也可以注入(inject)自己的功能,TestExtension 在生成浏览器之前会考虑这一点。它可能就像传递类的完全限定包名称一样简单,调用该类时可以实例化您通过 JVM 参数传递的功能对象。

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

关于java - 传递 ChromeOptions 而不实例化新的 WebDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35706846/

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