我希望實現在C#中硒的webdriver C#等文字出現
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//div[@id='timeLeft']"), "Time left: 7 seconds"));
功能,等待出現一個文本。但是,textToBePresentInElementLocated()
僅適用於java。有沒有一種簡單的方法在c#中實現這一點,等待文本出現在頁面上?
我希望實現在C#中硒的webdriver C#等文字出現
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//div[@id='timeLeft']"), "Time left: 7 seconds"));
功能,等待出現一個文本。但是,textToBePresentInElementLocated()
僅適用於java。有沒有一種簡單的方法在c#中實現這一點,等待文本出現在頁面上?
硒是開源的,所以看看它做什麼:
你有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
。
我有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());
}
}
方法需要webdriver的實例,字符串馬赫文字和元素By Class格式聲明。 WAIT_TIME對於以秒爲單位的等待時間是恆定的。
要等待文本出現
do
{
Thread.Sleep(2000);
}
while(!driver.FindElement(ByXpath("//The Xpath of the TEXT//")).Displayed);
{
}
我能夠解決此問題:
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"));