首页 > 解决方案 > 页面加载需要超过 60 秒才能加载,但设置 pageloadtimout 或显式等待不会导致脚本等待所需的时间

问题描述

我正在使用 selenium 4 模拟具有 3G 功能的网站,并且从一个页面加载到另一个页面需要超过 60 秒,这是默认超时。我将页面加载超时覆盖为 120 秒。但是我得到了异常 org.openqa.selenium.remote.UnreachableBrowserException: 与远程浏览器通信时出错。它可能已经死亡错误。

因此,这意味着退出被测浏览器的时间不超过 60 秒。

即使给出明确的等待也无济于事,因为它没有在课堂上的下一行代码继续前进。

脚本一直执行到 Sign in 代码行。当页面仅在显式等待行上导航时会发生问题

    System.setProperty("webdriver.chrome.driver","/Downloads/chromedriver-2");
    ChromeDriver driver=new ChromeDriver();
    DevTools devTools = driver.getDevTools();
    devTools.createSession();
    devTools.send(Network.emulateNetworkConditions(
            false,
            20,
            4000,
            5000,
            Optional.of(ConnectionType.CELLULAR3G)
    ));
    driver.manage().timeouts().pageLoadTimeout(120,TimeUnit.SECONDS);
    driver.get("https://www.youtube.com/feed/library");
    driver.findElement(By.xpath("//div[@id='button']//yt-formatted-string[contains(text(),'Sign in')]")).click();
    WebDriverWait wait=new WebDriverWait(driver, Duration.ofSeconds(120));
    wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@type='email']")));
    driver.findElement(By.xpath("//input[@type='email']")).sendKeys("check");
    driver.quit();

如何使页面之间的导航具有预定义的等待时间或如何使其处于定义的显式超时之下?如何解决这个问题以获得可靠的解决方案?编辑:在下面建议后更改了代码

在此处输入图像描述

标签: javaseleniumselenium-webdriverselenium-grid

解决方案


您将隐式和显式 Selenium 等待混合在一起。
强烈不建议这样做,这会导致问题。
在这种情况下等待的实际行为并不像您期望的那样。
有关详细说明,请参阅此处此处此处和处理此问题的其他主题。
代替

driver.findElement(By.xpath("//div[@id='button']//yt-formatted-string[contains(text(),'Sign in')]")).click();

尝试这个:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='button']//yt-formatted-string[contains(text(),'Sign in')]"))).click();

当然你应该把

WebDriverWait wait=new WebDriverWait(driver, Duration.ofSeconds(120));

在那条线之前。通常我们在实例化驱动程序后立即定义它。此外,您也应该使用电子邮件输入
来代替。 像这样:presenceOfElementLocatedvisibilityOfElementLocated

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@type='email']"))).sendKeys("check");

推荐阅读