由于哪个测试用例失败,Selenium webdriver(Chrome驱动程序)花费了太多时间加载gmail站点

时间:2017-01-31 12:20:35

标签: selenium selenium-webdriver automation browser-automation

我正在尝试自动化一个场景,我将登录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();

2 个答案:

答案 0 :(得分:0)

这个漏洞是噩梦,我强烈建议你反对这种使用webdriver登录gmail的方法。相反,您可以使用一些库来访问您的Gmail帐户,有关详细信息,请参阅here

答案 1 :(得分:0)

使用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();