Selenium网络驱动程序(Chrome驱动程序)由于测试用例失败而花费太多时间加载Gmail站点



我正在尝试自动化一个场景,我将登录 gmail 网站(我的帐户)并单击特定电子邮件(我们自己的网站)以确认电子邮件已发送,但我的问题是 gmail 有时需要超过 5 分钟才能加载完成,因此元素没有加载,当我尝试通过 CSS 单击时,我的测试用例失败了。Gmail加载图标在3-5分钟后停止。

驱动程序初始化代码:

        ChromeOptions options = new ChromeOptions();
        options.AddArgument("-incognito");
        options.AddArgument("--disable-extensions");
        DesiredCapabilities capabilites = DesiredCapabilities.Chrome();
        capabilites.SetCapability(ChromeOptions.Capability, options);
        driver = new ChromeDriver();
        driver.Manage().Window.Maximize();

添加强制等待:

        System.Threading.Thread.Sleep(30000);
        testingdriver.Navigate().GoToUrl(gmail);
        System.Threading.Thread.Sleep(30000);
        testingdriver.Navigate().GoToUrl(gmail);
        System.Threading.Thread.Sleep(30000);

然后点击元素:

 IWebElement firstEmailOpening =  testingdriver.FindElement(By.CssSelector("tr.zA:nth-child(1)"));
 firstEmailOpening.Click();

这个线程睡眠是噩梦,我强烈建议您不要使用网络驱动程序登录gmail的这种方法。相反,您可以使用一些库来访问您的Gmail帐户,有关详细信息,请参阅此处。

使用 Implicit wait 喜欢 -

driver.Navigate().GoToUrl(gmail);
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(60));

建议不要使用 Thread.Sleep(30000); 在这种情况下,假设您提到等待 30 秒,但您的元素在 2 秒内可见。它将额外等待 28 秒。它会使您的脚本变慢。

如果您遇到相同的问题,请使用ExplicitWait

new WebDriverWait(driver, TimeSpan.FromSeconds(45)).Until(ExpectedConditions.ElementExists(By.CssSelector("tr.zA:nth-child(1)")));
driver.FindElement(By.CssSelector("tr.zA:nth-child(1)")).Click();

相关内容

  • 没有找到相关文章

最新更新