【问题标题】:How to quit driver in qaf bdd2如何在 qaf bdd2 中退出驱动程序
【发布时间】:2021-10-08 23:56:49
【问题描述】:

我正在使用用于测试自动化的 qaf bdd2 框架。我有一个要求,我需要在特定端口中运行测试用例,所以我在下面实现了 qaf 侦听器

options.setExperimentalOption("debuggerAddress", "127.0.0.1:9222");

现在的问题是当我运行任何多个场景时,我希望浏览器在场景开始时打开并在场景结束时关闭,并且在运行其他场景时它应该以相同的方式继续。在实现在特定端口中运行 chrome 后,浏览器会打开但根本不会关闭。当新场景运行时,浏览器会打开一个新选项卡并运行我不想在同一选项卡中运行的测试。测试完成后浏览器不会自动关闭,我需要手动关闭它。

问题:如何实现 driver.quit() 以及我需要在 qaf 中的哪个位置申请关闭每个场景的浏览器?

【问题讨论】:

    标签: selenium qaf


    【解决方案1】:

    我找到了答案。我通过使用 taskkill 强制 chrome 驱动程序并使用 ItestListeners 在完成时调用它。

    代码: taskkill /f /im chromedriver.exe

    【讨论】:

    • 如果上述方法有效并且您想在驱动程序的相当方法上调用它,您可以在命令listener 之后拥有驱动程序。例如,` @Override public void afterCommand(QAFExtendedWebDriver driver, CommandTracker commandTracker) { if (DriverCommand.QUIT.equalsIgnoreCase(commandTracker.getCommand())) { //kill browser } } `
    • 知道了...我也会试试这个。谢谢
    【解决方案2】:

    您可以使用selenium.singletone framework property 设置驱动程序拆除行为。要为每个场景关闭浏览器,您需要设置它methods

    selenium.singletone=methods
    

    编辑:

    如果 driver Quit 没有杀死浏览器,而你需要强行杀死浏览器,你可以在命令listener 之后有驱动。例如,

    public class KillDriverListener extends QAFListenerAdapter {
    
        @Override
        public void afterCommand(QAFExtendedWebDriver driver, CommandTracker commandTracker) {
            if (DriverCommand.QUIT.equalsIgnoreCase(commandTracker.getCommand())) {
                //kill driver
            }
        }
    }
    
    

    在需要时使用qaf.listeners 属性注册监听器。

    【讨论】:

    • 我已将此 selenium.singleton=methods 放入 application.properties 文件中。尽管我在原始查询中提到了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 2021-04-24
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多