如何使用Selenium检查当前页面上是否存在给定的文本字符串?
答案 0 :(得分:17)
代码是这样的:
def elem = driver.findElement(By.xpath("//*[contains(.,'search_text')]"));
if (elem == null) println("The text is not found on the page!");
答案 1 :(得分:2)
如果在整个页面中搜索某些文字,则无需提供xpath
或selector
查找元素 的。以下代码可能有所帮助..
Assert.assertEquals(driver.getPageSource().contains("text_to_search"), true);
答案 2 :(得分:0)
出于某种原因,某些元素似乎不响应其他答案中列出的“通用”搜索。至少不在机器人框架下的Selenium2library中,我需要这个咒语才能找到特定的元素:
xpath=//script[contains(@src, 'super-sekret-url.example.com')]
答案 3 :(得分:0)
XPath的一个更简单(但可能效率更低)的替代方法是只获取页面体中的所有可见文本:
assertThat("Text not found on page", pageText, containsString(searchText));
然后,如果您正在使用JUnit或其他东西,您可以使用断言来检查您要搜索的字符串是否包含在其中。
AssertionError
使用XPath可能更有效,但对于那些不熟悉它的人来说,这种方式更容易理解。此外,由assertThat
生成的{{1}}将包含页面上存在的文本,这可能是调试所需的,因为任何查看日志的人都可以清楚地看到页面上有什么文本正在寻找isn&#t; t。