如何处理由于使用Selenium C#的Google Analytics而从未完全加载的页面

本文关键字:加载 Analytics 理由 何处 于使用 Selenium Google | 更新日期: 2023-09-27 18:34:54

我有一个实例,尽管所有 GUI 元素都可见,但我正在导航到的页面永远不会在测试环境中完全加载,这是由于 keepalive.php 脚本保持连接打开与 Google Analytics 和代码中的其他分析脚本,等待发送和接收信息。由于我们不收集网络内的统计信息,因此脚本永远不会完成,页面也永远不会完全加载。

手动导航到页面时,按 Escape 会停止脚本运行并加载页面,因此我尝试使用 Selenium 操作:

Actions action = new Actions(driver);
action.SendKeys(Keys.Escape);

但是,我相信永远不会达到此代码,因为Selenium正在等待页面完全加载,然后再执行任何进一步的代码行。

不幸的是,在我们的测试环境中删除或更改keepalive.php和Google Analytics代码不是一个可行的选择,而是我们的自动化套件必须解决这个问题。

如何处理由于使用Selenium C#的Google Analytics而从未完全加载的页面

您可以设置 PageLoadTimout。有了这个,Selenium在无法在指定时间内加载站点时会抛出错误,您可以捕获并继续。可悲的是,不是很优雅。

driver.Manage().Timeouts().SetPageLoadTimeout(timespan)

摘自Selenium WebDriver - 如何使用C#设置页面加载超时

根据页面加载超时 - 使用 C# 的 Selenium Web驱动程序,可能并非每个浏览器都支持超时。

将隐式等待设置为零。

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(0));

并通过显式等待等待元素

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
    {
        return d.FindElement(By.Id("someDynamicElement"));
    });