Поиск текста на странице с Selenium 2

Как проверить, присутствует ли данная текстовая строка на текущей странице с помощью Selenium?

Ответы

Ответ 1

Код выглядит так:

def elem = driver.findElement(By.xpath("//*[contains(.,'search_text')]")); 
if (elem == null)  println("The text is not found on the page!");

Ответ 2

Если ваш поиск всей страницы для некоторого текста, то предоставление xpath или selector до найти элемент не требуется. Следующий код может помочь.

Assert.assertEquals(driver.getPageSource().contains("text_to_search"), true);

Ответ 3

По некоторым причинам некоторые элементы не реагируют на "общий" поиск, указанный в другом ответе. По крайней мере, не в Selenium2library под Robot Framework, где мне понадобилось это заклинание, чтобы найти конкретный элемент:

xpath=//script[contains(@src, 'super-sekret-url.example.com')]

Ответ 4

Более простая (но, вероятно, менее эффективная) альтернатива XPaths - это просто получить весь видимый текст в теле страницы так:

def pageText = browser.findElement(By.tagName("body")).getText();

Затем, если вы используете JUnit или что-то еще, вы можете использовать утверждение, чтобы проверить, что строка, которую вы ищете, содержится в нем.

assertThat("Text not found on page", pageText, containsString(searchText));

Использование XPath, возможно, более эффективно, но этот способ проще понять для незнакомых с ним. Кроме того, AssertionError, сгенерированный assertThat, будет содержать текст, который существует на странице, что может быть желательно для отладки, поскольку любой, кто смотрит в журналы, может четко видеть, какой текст находится на странице, если то, что мы ищем, isn "т.