【发布时间】:2019-04-05 23:31:24
【问题描述】:
问候 Stack Overflow 社区,
我有一个简短的问题,如果得到回答,它将帮助其他任何希望使用 Selenium 和 C# 的人等待网页上出现不是可点击链接但显示在标签标签内的文本。
我有以下示例代码,
<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')]")));
任何帮助将不胜感激。
【问题讨论】:
-
您确定它会忽略等待(使用 TextToBePresent...)吗?文本出现多长时间?
-
至少是几秒钟,但是这个等待是在满足之前的等待之后发生的。当第一个等待得到满足时,这个第二个等待文本也同时出现。因此,它应该几乎是瞬时的。不过我会尝试插入睡眠,看看是否有什么不同。
-
通过简短的谷歌搜索我发现了这个:stackoverflow.com/a/49867605/8179099
-
@AndyG 我刚刚用 10 秒的 Thread.Sleep 对其进行了测试,但它仍然没有在标签标签中找到“未就绪”文本,这三种方法中的每一种都可以在标签标签。
-
@MosheSlavin 感谢您的文章,但这不适用于这种情况,因为预期条件不会过时,因为视觉工作室不再显示该警告。
标签: c# selenium xpath css-selectors webdriverwait