for循环为空时元素不可见

时间:2015-03-31 08:50:49

标签: c# selenium

我有一个for循环点击网站并测试链接是否正常工作。

但是当我进入一个没有链接的页面时,测试显然会失败。 但我无法弄清楚如何停止测试而不是失败。

这是我非常简单的循环

public void TestT2Links()
{
    int count = LinkElements.Count;
    for (int i = 3; i < count; i++)
    {
        PropertiesCollection.driver.FindElements(By.TagName("a"))[i].Click();
    }
}

VS的错误记录

结果讯息:

OpenQA.Selenium.ElementNotVisibleException : element not visible
  (Session info: chrome=40.0.2214.93)
  (Driver info: chromedriver=2.10.267521,platform=Windows NT 6.1 SP1 x86_64)

结果StackTrace:

at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebElement.Click()

关于如何阻止它的任何想法?

1 个答案:

答案 0 :(得分:1)

在点击之前添加可见性检查:

var e = PropertiesCollection.driver.FindElements(By.TagName("a"));
for (int i = 3; i < e.Count; i++) {
    if (e[i].Displayed) {
        e[i].Click();
    }
}