【问题标题】:How to handle user closing in Selenium如何在 Selenium 中处理用户关闭
【发布时间】:2021-07-30 22:05:29
【问题描述】:

我用 c# 编写了一个 selenium 程序,我从一个 winform 类中调用了该类的一个实例。我遇到的问题是,如果用户在 selenium 运行时退出 chrome 浏览器,程序会冻结一秒钟。我假设这是由于不得不退出 webdriver。除了尝试之外,还有其他方法吗?我指的是Close Chromewebdriver when user close tab in Selenium,但我似乎无法理解答案。

   public class BlizzGenMain
    {

        public static ChromeOptions options;
        public static IWebDriver driver;
        public static Proxy proxy;
        public static WebDriverWait wait;
        public static String orderID;
        public static String phoneNum;
        public static String code;
        public static String email;
        public static String password;
        public static String simKey;

        public BlizzGenMain(String simAPI, String pass)
        {
            var driverService = ChromeDriverService.CreateDefaultService();
            driverService.HideCommandPromptWindow = true;

            orderID = "";
            phoneNum = "";
            email = "";
            code = "";
            simKey = simAPI;
            password = pass;
            options = new ChromeOptions();
            driver = new ChromeDriver(driverService, options);
            proxy = new Proxy();
            wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
            


        }

        static void openChrome()
        {  
driver.Navigate().GoToUrl("https://account.battle.net/creation/flow/creation-full");
        }

【问题讨论】:

  • "如果用户在 selenium 运行时退出 chrome 浏览器,程序会冻结一秒钟" -- 是的,如果您手动关闭浏览器,则 selenium 会查找浏览器实例并抛出错误消息.那么你要手动关闭chrome驱动实例后杀死它吗?
  • 是的,如果用户有机会关闭 chrome,我想杀死 chromedriver。
  • 打开命令提示符并执行此命令taskkill /F /IM ChromeDriver.exe 它将杀死chrome驱动程序的所有进程。如果有帮助,请告诉我。
  • 这不需要try catch 声明吗?由于代码必须意识到 chrome 已关闭,因此必须捕获错误然后执行该命令?
  • 不需要。您可以在套件结束时执行此命令。如果有帮助,请告诉我,我可以用代码发布答案。

标签: c# selenium selenium-chromedriver


【解决方案1】:

最好通过在无头模式下运行测试来阻止用户关闭浏览器。我没想到你会想要在你的自动化测试中手动干预。

var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("headless");

var browser = new ChromeDriver(chromeOptions));

【讨论】:

  • headless 的问题是网站有验证码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多