Selenium webdriver c#等待文本出现

时间:2014-09-22 14:04:48

标签: c# testing selenium selenium-webdriver webdriver

我希望实现

wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//div[@id='timeLeft']"), "Time left: 7 seconds"));

在c#中运行,等待文本出现。但是,textToBePresentInElementLocated()仅在java中可用。有没有一种简单的方法可以在c#中实现这一点,等待文本显示在页面上?

4 个答案:

答案 0 :(得分:3)

我能够通过以下方式解决此问题:

element = driver.FindElement(By.Xpath("//div[@id='timeLeft']")));
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.TextToBePresentInElement(name, "Time left: 7 seconds"));

答案 1 :(得分:1)

Selenium是开源的,所以看看它的作用:

https://github.com/SeleniumHQ/selenium/blob/master/java/client/src/org/openqa/selenium/support/ui/ExpectedConditions.java#L305

然而,你拥有LINQ的强大功能,所以它会变得更简单,伪:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.IgnoreExceptionTypes(typeof(StaleReferenceException)); // ignore stale exception issues
wait.Until(d => d.FindElement(By.XPath("//div[@id='timeLeft']")).Text.Contains("Time left: 7 seconds"));

最后一行将等到d.FindElement(By.XPath("//div[@id='timeLeft']")).Text返回的文字包含Time left: 7 seconds

答案 2 :(得分:0)

我的方法的Java版本等待文本出现在元素中。 也许它会帮助你。

public void waitForText(WebDriver driver, String text, By selector) {
    try {
        WebDriverWait waitElem = new WebDriverWait(driver, WAIT_TIME);
        waitElem.until(ExpectedConditions.textToBePresentInElementLocated(selector, text));
    }catch (TimeoutException e){
        logger.error(e.toString());
    }
}

Method接受webdriver的实例,String到mach文本和以By Class格式声明的Element。 WAIT_TIME在等待时间内是恒定的,以秒为单位。

答案 3 :(得分:-3)

等待文字出现

  do
  {
    Thread.Sleep(2000);
  }

  while(!driver.FindElement(ByXpath("//The Xpath of the TEXT//")).Displayed);

  {

  }