如何在不聚焦窗口的情况下切换Selenium中的选项卡



我在Windows 10上使用C#Selenium和Edge网络驱动程序。下面是我在选项卡之间切换的代码。

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/";
}
}

但似乎是专注于Edge浏览器,让我不再查看电子邮件等。我怎样才能使硒达到";静默地";专注于一个新的选项卡(或窗口等(,这样我就可以在代码运行时做点什么?

p/s:我尝试了无头模式,但我需要手动输入凭据才能登录,所以我需要一个UI。或者是否有办法在运行时从窗口模式转换为无头模式?

  1. 在Selenium中无法实现这一点(在没有焦点的情况下更改焦点(。如果您正在运行Selenium测试,请使用不同的机器。HW或虚拟

浏览器的无头模式也不是一个好的解决方案。正常模式和无头模式之间的差异迟早会给你带来太多的问题需要解决。

  1. 在浏览器的自动化模式下,避免captcha是非常困难的。在这种模式下,你需要人工智能来解决captcha,甚至不能保证它会工作(取决于captcha和服务器保护(。如果你需要测试或抓取一些有这种保护的页面,你必须使用不同的方法:为浏览器编写插件(javascript应用程序(并在浏览器的常规模式下运行

我认为您应该使用相同的代码,但要考虑在VM中部署脚本。有了它,你可以继续在你的本地做你的事情,其中你的硒代码将在虚拟机中执行(用你自己的操作系统设置(

Oracle虚拟机虚拟盒为虚拟机提供了非常可行的解决方案。查看他们的官方网站链接。它们针对MacOS、Linux和Windows操作系统有不同的发行版。

最新更新