首页 > 解决方案 > 尝试访问 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;
    }

尝试搜索元素时也会出现此问题。

标签: c#seleniumselenium-webdriver.net-coregoogle-chrome-headless

解决方案


推荐阅读