c# - 在 C# 中等待 Selenium Web 驱动程序中的标签标签文本

标签 c# selenium xpath css-selectors webdriverwait

问候 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/

相关文章:

c# - 抛出新的 NotImplementedException()

c# - 为什么在与 NHibernate 一起使用时,实体类中的所有公共(public)方法都声明为虚拟方法?

java - xvfb 与 Selenium 。显示已在使用错误

xpath - 使用 JMeter 中的 XPath 查询从 HTML 中的选择元素中提取值

html - 如何使用 XPath 在 HTML 中搜索标题?

c# - XslCompiledTransform 无法使用从字符串创建的 XmlTextReader 进行转换

c# - 如何让 Visual Studio Intellisense 推荐方法的异步变体

javascript - 在 webdriver.io 中的 while 循环中链接 Promise

Ruby 代码无需实例化或方法调用即可运行

xml - 访问祖先的两个值的比较