c# - 如果浏览器打开,请检查 Selenium
问题描述
我正在使用 C#/Selenium 3 和 Microsoft Chromium Edge Webdriver 来抓取网页,然后将数据传送到另一个应用程序。我需要检查用户是否关闭了网络浏览器。有没有一种快速的方法来做到这一点?我想出了下面的代码,但问题是如果 Web 浏览器关闭,那么 _webDriver.CurrentWindowHandle 需要 4 秒或更长时间才能引发异常。
public bool IsOpen
{
get
{
if (!this._isDisposed)
{
try
{
_ = this._webDriver.CurrentWindowHandle;
return true;
}
catch
{
// ignore.
}
}
return false;
}
}
解决方案
抛出异常需要几秒钟,因为当浏览器关闭时,驱动程序仍然会重试连接到浏览器。它无法判断浏览器是手动关闭还是自动关闭。
我需要检查用户是否关闭了网络浏览器
自动化浏览器测试不应被人工干预中断。这与所有最佳实践背道而驰。如果您手动关闭浏览器,WebDriver 将抛出WebDriverException。因此,您还可以使用try-catch
方法 onWebDriverException
检查浏览器是否可访问。但是抛出异常也需要几秒钟的时间,原因与上述相同。
如果要防止用户手动关闭浏览器,可以在无头模式下使用 Edge,如下所示:
edgeOptions.AddArguments("--headless");
推荐阅读
- spring - Spring - 提交表单后如何让页面刷新?
- c# - 在 .NET Core Web 应用程序中测试路由
- python - 为什么使用自己的分类训练 Keras NN 时损失函数不会减少?
- angular - 离子 4:ngOnInit 与 ionViewWillEnter
- python - 如何使用字典数据制作子图?
- python - TensorFlow Serving 将数据作为 b64 而不是 Numpy Array 发送
- python - 无符号字符数组问题
- c++ - 如何避免文件变量成为 OpenMP 中的竞争条件(离散元方法模拟)
- php - 将命令行 cURL 转换为 PHP cURL(带身份验证)
- laravel - Laravel 如何测试 _Constructor