Подтвердить что ты не робот

Как я могу проверить, существует ли какой-либо текст на странице?

Я использую selenium webdriver, как я могу проверить, существует ли какой-либо текст на странице? Может быть, кто-то порекомендует мне полезные ресурсы, где я могу прочитать об этом. Благодаря

4b9b3361

Ответ 1

С XPath, это не так сложно. Просто выполните поиск всех элементов, содержащих данный текст:

List<WebElement> list = driver.findElements(By.xpath("//*[contains(text(),'" + text + "')]"));
Assert.assertTrue("Text not found!", list.size() > 0);

Официальная документация не очень поддерживает такие задачи, но тем не менее это основной инструмент.

JavaDocs больше, но требуется некоторое время, чтобы пройти через все полезные и неиспользуемые.

Чтобы узнать XPath, просто следовать за Интернетом. Спецификация также удивительно хорошо читается.


EDIT:

Или, если вы не хотите, чтобы ваш Implicit Wait, чтобы вышеприведенный код ожидал появления текста, вы можете сделать что-то в путь этого:

String bodyText = driver.findElement(By.tagName("body")).getText();
Assert.assertTrue("Text not found!", bodyText.contains(text));

Ответ 2

Это поможет вам проверить, есть ли требуемый текст на веб-странице или нет.

driver.getPageSource().contains("Text which you looking for");

Ответ 3

Вы можете получить основной текст всей страницы следующим образом:

bodyText = self.driver.find_element_by_tag_name('body').text

то используйте assert, чтобы проверить его следующим образом:

self.assertTrue("the text you want to check for" in bodyText)

Конечно, вы можете быть конкретным и получить конкретный текст элемента DOM, а затем проверить, что вместо получения всей страницы.

Ответ 4

В selenium 2 webdriver нет подтвержденияTextPresent, поэтому вы должны проверить текст в источнике страницы. Ниже приведены некоторые практические примеры.

Python

В драйвере Python вы можете написать следующую функцию:

def is_text_present(self, text):
    return str(text) in self.driver.page_source

то используйте его как:

try: self.is_text_present("Some text.")
except AssertionError as e: self.verificationErrors.append(str(e))

Чтобы использовать регулярное выражение, попробуйте:

def is_regex_text_present(self, text = "(?i)Example|Lorem|ipsum"):
    self.assertRegex(self.driver.page_source, text)
    return True

Для полного примера см. FooTest.py file.

Или проверьте несколько других альтернатив:

self.assertRegexpMatches(self.driver.find_element_by_xpath("html/body/div[1]/div[2]/div/div[1]/label").text, r"^[\s\S]*Weather[\s\S]*$")
assert "Weather" in self.driver.find_element_by_css_selector("div.classname1.classname2>div.clearfix>label").text

Источник: Еще один способ проверить (утверждать), если текст существует с использованием Selenium Python

Java

В Java используется следующая функция:

public void verifyTextPresent(String value)
{
  driver.PageSource.Contains(value); ;
}

и использование будет:

try
{
  Assert.IsTrue(verifyTextPresent("Selenium Wiki"));
  Console.WriteLine("Selenium Wiki test is present on the home page");
}
catch (Exception)
{
  Console.WriteLine("Selenium Wiki test is not present on the home page");
}

Источник: Использование verifyTextPresent в Selenium 2 Webdriver


Behat

Для Behat вы можете использовать Расширение норки. Он имеет следующие методы, определенные в MinkContext.php:

/**
 * Checks, that page doesn't contain text matching specified pattern
 * Example: Then I should see text matching "Bruce Wayne, the vigilante"
 * Example: And I should not see "Bruce Wayne, the vigilante"
 *
 * @Then /^(?:|I )should not see text matching (?P<pattern>"(?:[^"]|\\")*")$/
 */
public function assertPageNotMatchesText($pattern)
{
    $this->assertSession()->pageTextNotMatches($this->fixStepArgument($pattern));
}

/**
 * Checks, that HTML response contains specified string
 * Example: Then the response should contain "Batman is the hero Gotham deserves."
 * Example: And the response should contain "Batman is the hero Gotham deserves."
 *
 * @Then /^the response should contain "(?P<text>(?:[^"]|\\")*)"$/
 */
public function assertResponseContains($text)
{
    $this->assertSession()->responseContains($this->fixStepArgument($text));
}

Ответ 5

В python вы можете просто проверить, как следует:

# on your `setUp` definition.
from selenium import webdriver
self.selenium = webdriver.Firefox()

self.assertTrue('your text' in self.selenium.page_source)

Ответ 6

Вы можете проверить текст в источнике страницы следующим образом:

Assert.IsTrue(driver.PageSource.Contains("Your Text Here"))

Ответ 7

В С# этот код поможет вам проверить, есть ли требуемый текст на веб-странице или нет.

Assert.IsTrue(driver.PageSource.Contains("Type your text here"));

Ответ 8

  boolean Error = driver.getPageSource().contains("Your username or password was incorrect.");
    if (Error == true)
    {
     System.out.print("Login unsuccessful");
    }
    else
    {
     System.out.print("Login successful");
    }