2015-04-16 36 views
0

我用我需要的方法挣扎了一下。这是我想做的事:webdriver(c#) - 循环页面刷新,直到不存在元素样式

  1. 我想加载网页
  2. 在该网页上,我想等到一个特定的元素,它的风格属性包含“隐藏的:真实的;”。当这种风格存在时,页面已经完全加载,所以我可以继续我的测试
  3. 我需要继续刷新网页,直到上述条件为真 - 请假设我需要保持清爽。我知道这似乎很愚蠢。

这里是我想要

第1步:

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

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

第2步:

从规格中找到样式C元件(编写从存储器代码)

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

步骤3:

如果元件具有的风格 “隐藏的:真实的;”在页面加载时,则不执行其他任何操作,直到元素不包含“hidden:true;”样式的页面刷新。 (从内存中写代码)

if(MyElementStyle.Contains("hidden: true;")) 

{ 
    // do nothing 
} 

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

这似乎是工作,但上面的代码将只刷新一个页面的时间,所以我需要循环,而不是使用if语句。

任何人都可以提供一些指针或建议更好的方法来处理这个问题吗?

+1

这将会非常慢并且效率低下,尤其是在Selenium Grid中。为什么需要清爽?理想情况下,您的应用程序将有一个稳定的方式来识别“此页面是否可供我使用”。 – Arran

+0

AUT目前有一个已知的问题,有时它会加载,而其他时间则不会。我知道这并不理想,测试本身并不理想,但我们需要坚持现在刷新。一如既往地欣赏你的意见 – Banjaxx

回答

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;")); 
相关问题