c# - 尝试访问 Url 属性时 WebDriver 抛出超时错误
问题描述
我单击从服务器下载 PDF 文件并在新选项卡中打开它的按钮。单击后,我等待选项卡何时打开:
TimeSpan timeSpan = TimeSpan.FromSeconds(10);
WebDriverWait waiter = new WebDriverWait(driver, timeSpan);
waiter.Until(drv => drv.WindowHandles.Count == 2);
打开此 PDF 文件时,我切换到新选项卡:
string handle = drv.WindowHandles.Last();
drv.SwitchTo().Window(handle);
然后我尝试访问 Web 驱动程序上的 Url 属性:
TimeSpan timeSpan = TimeSpan.FromSeconds(10);
WebDriverWait waiter = new WebDriverWait(driver, timeSpan);
waiter.Until(driver => driver.Url.StartsWith("blob:"));
但我得到这个错误:
对 URL http://localhost:44829/session/fc28864b05b7a2b3ad16fd69e29fb48d/url的远程 WebDriver 服务器的 HTTP 请求在 60 秒后超时。
此问题仅在 linux 机器上的 Headless 模式下出现:
public static IWebDriver Create()
{
ChromeOptions options = new ChromeOptions();
options.AddArgument("headless");
options.AddArgument("no-sandbox");
options.AddArgument("window-size=1920x1080");
IWebDriver driver = new ChromeDriver(options);
return driver;
}
但在 Windows 上的简单 chrome 模式下没有问题:
public static IWebDriver Create()
{
IWebDriver driver = new ChromeDriver();
driver.Manage().Window.Maximize();
return driver;
}
尝试搜索元素时也会出现此问题。