【发布时间】: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