webdriver(c#) - 循环页面刷新,直到元素样式不存在

时间:2015-04-16 18:46:33

标签: c# selenium selenium-webdriver webdriver

我正在努力用我需要的方法。这就是我想要做的事情:

  1. 我想加载网页
  2. 在该网页上,我想等到特定元素及其样式属性包含“hidden:true;”。如果存在此样式,则页面已完全加载,因此我可以继续进行测试
  3. 我需要继续刷新网页,直到上述条件为真 - 请假设我需要保持清爽。我知道这看起来很蠢。
  4. 这是我正在尝试的

    第1步:

    导航到网页(从内存中编写代码):

    driver.Navigate().GoToUrl("http://example.com");
    

    第2步:

    从特定元素中查找样式(从内存中编写代码)

    Iwebelement MyElement = driver.findElement(By.id("example"));
    Iwebelement MyElementStyle = MyElement.GetAttribute("style");
    

    第3步:

    如果元素的样式为“hidden:true;”在页面加载然后执行任何其他操作页面刷新,直到该元素不包含“hidden:true;”样式(从内存中编写代码)

    if(MyElementStyle.Contains("hidden: true;"))
    
    {
      //  do nothing 
    }
    
    else
    {
          driver.Navigate().GoToUrl("http://example.com");
    }
    

    这似乎有效,但上面的代码只会刷新页面一次,所以我需要循环而不是使用if语句。

    是否有人能够提供一些指示或建议更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

  

我不确定你使用的语言绑定是什么,但看起来像是C#和java的混合物,如果它是真正的测试代码,那么它将不起作用。

使用do while循环进行检查并检查属性是否具有预期值。

IWebElement MyElement = Driver.FindElement(By.Id("example"));
string MyElementStyle = MyElement.GetAttribute("style");

do
{
   Driver.Navigate().Refresh();

} while (MyElementStyle.Contains("hidden: true;"));