Selinium:等待功能和条件重复

时间:2015-10-29 15:28:37

标签: c# selenium-webdriver

在我的自动化项目中。

浏览器:Firefox

我想添加一个没有任何特定时间的等待函数

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(7));
IWebElement query1 = driver.FindElement(By.("continue"));

怎么做?

另外要验证是否有其他页面未加载,请重复上一个功能。我这样做的原因是因为有时浏览器不会更改页面。它实际上停留在同一页面上。

除此之外,在Selenium

中还有可能的事情
  1. 过去一小时清除缓存和Cookie
  2. 在新标签页中打开网址(在已打开的浏览器中,而不是打开新窗口)

1 个答案:

答案 0 :(得分:1)

conductor framework中使用了一件对我来说一直有效的事情(关于等待)。

以下是您可以尝试在C#中重新创建的一些伪代码:

    while (size == 0) {
        size = driver.findElements(by).size();
        if (attempts == MAX_ATTEMPTS) fail(String.format("Could not find %s after %d seconds",
                                                             by.toString(),
                                                             MAX_ATTEMPTS));
        attempts++;
        try {
            Thread.sleep(1000); // sleep for 1 second.
        } catch (Exception x) {
            fail("Failed due to an exception during Thread.sleep!");
            x.printStackTrace();
        }
    }

基本上这会循环传递的选择器的大小,并将每秒轮询。你能做到的另一种方式就是条件。

更多伪代码:

function waitForElement(element) {
  Wait.Until(ExpectedConditions.elementIsClickable(element), 10.Seconds)
}

还有你的问题 -

  

可以硒......

     
      
  1. 最后一小时清除缓存和Cookie   在新标签页中打开URL(在已打开的浏览器中,而不是打开新窗口)
  2.   
  3. 在新标签页中打开网址(在已打开的浏览器中,而不是打开新窗口)
  4.   
  1. 如果您通过使测试用例彼此独立而不是一遍又一遍地重复使用相同的浏览器来正确编写测试用例,则会自动发生。当Selenium打开一个新窗口时,它会以一个全新的配置文件开始新鲜 - 这意味着它从一开始就在缓存中“没有”。

  2. Selenium不会(也绝不会)知道标签和窗口之间的区别。对于Selenium,它只是一个句柄。

  3. 来源: