问候 Stack Overflow 社区,
我有一个简短的问题,如果得到回答,将帮助任何其他希望使用 Selenium 和 C# 的人等待文本出现在网页上,该文本不是可点击的链接,而是显示在 label 标签中。
我有以下示例代码,
<div class="class1" style="style7">
<label id="statusBar" class="class2">Not Ready</label>
</div>
我试图使用 Selenium 和 C# 插入等待,直到出现预期条件,该条件将暂停代码,然后在满足条件后恢复。
我可以找到标签并在 XPath 找到后执行操作...
wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[@id='statusBar']")));
但是,当我尝试等待“未就绪”文本在该标签内可见时,C# 脚本卡在此时,无法在标签内找到文本。
这是我根据几篇未解决此问题的堆栈溢出文章尝试的方法。
wait.Until(ExpectedConditions.TextToBePresentInElementLocated(By.Id("statusBar"), "Not Ready"));
wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[@id='statusBar']//label[contains(text(), 'Not Ready')]")));
wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[@id='statusBar'][contains(text(), 'Not Ready')]")));
如有任何帮助,我们将不胜感激。
最佳答案
看来你们很接近。您需要引发WebDriverWait,您可以使用以下任一解决方案:
使用
TextToBePresentInElementLocated()
:CssSelector
:wait.Until(ExpectedConditions.TextToBePresentInElementLocated(By.CssSelector("label.class2#statusBar"), "Not Ready"));
XPath
:wait.Until(ExpectedConditions.TextToBePresentInElementLocated(By.XPath("//label[@class='class2' and @id='statusBar']"), "Not Ready"));
关于c# - 在 C# 中等待 Selenium Web 驱动程序中的标签标签文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53106407/