c# - 如何在不聚焦窗口的情况下切换 Selenium 中的选项卡
问题描述
我在 Windows 10 上使用 C# Selenium 和 Edge webdriver。下面是我在选项卡之间切换的代码。
public class BrowserTest
{
private readonly EdgeDriver driver;
public BrowserTest()
{
EdgeDriverService service = EdgeDriverService.CreateDefaultService(configuration[DriverPathKey]);
service.SuppressInitialDiagnosticInformation = true;
service.HideCommandPromptWindow = true;
driver = new EdgeDriver(service, new EdgeOptions()
{
PageLoadStrategy = PageLoadStrategy.Default,
});
}
public void OpenGoogleAndDuckduckgo()
{
driver.Url = "https://google.com/";
driver.ExecuteScript("window.open();");
driver.SwitchTo().Window(driver.WindowHandles.Last()); // This line lead to Edge focusing
driver.Url = "https://duckduckgo.com/";
}
}
但似乎它专注于边缘浏览器,让我远离检查我的电子邮件等。我怎样才能让 Selenium “静默”地专注于新标签(或窗口等),这样我就可以在我的代码运行时做一些事情?
P/s:我尝试了无头模式,但我需要手动输入凭据才能登录,所以我需要一个 UI。或者是否有办法在运行时从窗口模式转换为无头模式?
解决方案
- 您无法在 Selenium 中实现这一点(改变焦点而不关注焦点)。如果您正在运行 Selenium 测试,只需使用不同的机器。硬件或虚拟。
浏览器的无头模式也不是一个好的解决方案。由于正常模式和无头模式之间的差异,您迟早会遇到太多问题需要解决。
- 在浏览器的自动化模式下,避免验证码非常困难。您需要 AI 在该模式下解决验证码,甚至不能保证它会起作用(取决于验证码和服务器保护)。如果您需要测试或抓取一些具有此保护的页面,您必须使用不同的方法:为浏览器(javascript 应用程序)编写插件并在浏览器的常规模式下运行它。
推荐阅读
- php - 根据特定规则创建 php 数组
- elasticsearch - Elasticsearch 中的“epoch_millis”是什么?( 日期格式?)
- tensorflow - Tensorflow - 减少 session.run() 开销
- python - 如何在 Python 中定义一个类并遍历它?
- reactjs - 对象作为 React Child 无效
- c# - 如何在生产服务器上将文件从一个位置复制到另一个位置?
- jquery - 未捕获的 ReferenceError:$ 未定义 - Datepicker - Codeigniter 3
- database - 如何为多租户 SAAS 应用程序实施行级安全性
- css - 如何向圆环图的每个切片添加弹出框或工具提示
- mysql - 从 Amazon S3 存储桶文件创建/更新 Amazon Athena 表