当前位置: 首页 > 知识库问答 >
问题:

在不实例化新WebDriver的情况下传递ChromeOptions

潘振国
2023-03-14

我正在尝试将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);
    }
   }

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

共有1个答案

田兴怀
2023-03-14

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

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

 类似资料:
  • 我有一门课: 问题是,只有我实例化了那个类,它才会运行。 不管怎样,我怎么能强迫它运行呢?

  • 问题内容: 我已经进行了一些研究,发现的大多数示例都使用表单(显然用于用户输入)来收集数据,然后通过请求对象将其传递到另一个JSP页面。 我的问题是:如果未在HTML 标记中设置参数,是否可以在JSP页面之间传递参数? 问题答案: JSP页面无法分辨手动构造的GET URL之间的区别,例如: ,而不是类似的内容: 可以通过或 那是你要的吗

  • 我们一直在试图找出如何从groovy脚本调用,(0),(1)selenium网站登录,然后调用另一个测试用例中的导航(脚本)部分。两种方法都能100%独立运行。下面是我用来从(0)调用这两个脚本的代码,但一旦登录完成。运行,将使用选择打开一个新浏览器。运行,测试显然会失败,因为它没有登录。 因此,我去操作了登录、选择(通过删除webdriver代码),主脚本代码现在看起来是这样的(我已经在粘贴中排

  • 我正在使用Datatables服务器端ajax分页,需要向服务器传递一些变量。我的服务器正在运行Struts2操作来处理此datatables请求。 我面临一些问题,因为datatable正在传递预定义的内部变量(如iDisplayStart,iDisplayL长度,iColns,sSearch),但Struts2不能接收这种骆驼样式(只有第一个字符较低,第二个大写)。 为了确保这一点,我创建了以

  • 可以使用第三方服务发送推送通知而不依赖谷歌的Firebase云消息(FCM)吗? 如果应用程序默认不包含Firebase包,那么创建/使用自定义框架是否具有与Firebase相似的功能集?或者Firebase是否以某种方式集成在Android操作系统中,而这种方式是从应用程序外部进行的?

  • 问题内容: 有什么方法可以避免在初始化类时调用类,例如从类方法中调用? 我试图在Python中创建一个不区分大小写和标点符号的字符串类,以进行有效的比较,但是在不调用的情况下创建新实例时遇到了麻烦。 我应该替换为什么以用切片初始化新对象? 编辑: 受到以下答案的启发,已对初始化程序进行了编辑,以快速检查是否没有参数。 问题答案: 在此示例中,使用元类提供了一个不错的解决方案。元类的用途有限,但效果