Как проверить наличие текста на загруженной странице через WebDriver

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

 Arran05 нояб. 2012 г., 15:18
На каком языке программирования? Какой браузер? Всегда ли текст отображается в одном и том же элементе? Куда? Какой элемент?

Ответы на вопрос(8)

положим, вы говорите,driver.getPageSource().contains("input"); Это непроверитьвход» присутствует на экране, только этовход» присутствует в HTML, как тег ввода.

Я обычно проверяю текст элемента, используя xpath:

boolean textFound = false;  
try {
    driver.findElement(By.xpath("//*[contains(text(),'someText')]"));
    textFound = true;
} catch (Exception e) {
    textFound = false;
}

Если вы хотите точное совпадение текста, просто удалите функцию contains:

driver.findElement(By.xpath("//*[text()='someText']));

Если вы хотите проверить только отображаемые объекты (C #):

    public bool TextPresent(string text, int expectedNumberOfOccurrences)
    {
        var elements = Driver.FindElements(By.XPath(".//*[text()[contains(.,'" + text + "')]]"));
        var dispayedElements = 0;
        foreach (var webElement in elements)
        {
            if (webElement.Displayed)
            {
                dispayedElements++;
            }
        }
        var allExpectedElementsDisplayed = dispayedElements == expectedNumberOfOccurrences;
        return allExpectedElementsDisplayed;
    }

Для программистов на Ruby вот как можно утверждать. Нужно включить Минитест, чтобы получить подтверждения

    assert(@driver.find_element(:tag_name => "body")..include?("Name"))

Как зморрис указываетdriver.getPageSource().contains("input"); не является правильным решением, потому что он ищет во всех HTML, а не только тексты на нем. Предлагаю проверить этот вопрос:Как я могу проверить, существует ли какой-либо текст на странице? и рекомендуемый способ, объясненный Slanec:

String bodyText = driver.findElement(By.tagName("body")).getText();
Assert.assertTrue("Text not found!", bodyText.contains(text));
 Cagy7919 авг. 2015 г., 00:49
не должен»t это будет: String bodyText = driver.findElement (By.tagName ("тело»)) GetText (). Assert.assertTrue (true, bodyText.contains (text));
 SOAlgorithm25 мая 2017 г., 01:58
Это не работает в Edge

вы можете сделать то, что возвращает логическое значение. Следующий код Java в WebDriver с TestNG или JUnit может сделать:

protected boolean isTextPresent(String text){
    try{
        boolean b = driver.getPageSource().contains(text);
        return b;
    }
    catch(Exception e){
        return false;
    }
  }

Теперь вызовите вышеуказанный метод, как показано ниже:

assertTrue(isTextPresent("Your text"));

Или есть другой способ. Я думаю, это лучший способ:

private StringBuffer verificationErrors = new StringBuffer();
try {
                  assertTrue(driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*    Your text here\r\n\r\n[\\s\\S]*$"));
  } catch (Error e) {
     verificationErrors.append(e.toString());
   }
 Ripon Al Wasim31 янв. 2013 г., 10:00
Да, предпочитаю последний ответ
 user202765931 янв. 2013 г., 08:39
В вашем вопросе, похоже, не хватает информации. 1) Какой язык вы используете? 2) Используете ли вы какие-либо тестовые рамки как JUnit или TestNG?
 Bob Small12 авг. 2016 г., 19:55
Это лучшее решение, так как его можно использовать для нескольких текстовых значений.

Примечание: не в логическом

WebDriver driver=new FirefoxDriver();
driver.get("http://www.gmail.com");

if(driver.getPageSource().contains("Ur message"))
  {
    System.out.println("Pass");
  }
else
  {
    System.out.println("Fail");
  }

нице. Вы можете использовать любой из 8 локаторов по вашему усмотрению.

String Verifytext = driver.findElement (By.tagName ("тело»)) GetText () обрезать ()..; Assert.assertEquals (Verifytext, "Вставьте сюда текст, который необходимо проверить »);

вы можете использовать свойство Driver.PageSource, как показано ниже:

Driver.PageSource.Contains (»ожидаемое сообщение);

 kranthi kumar05 нояб. 2012 г., 14:47
Есть ли способ найти текст без источника страницы и более того, мне нужно напечатать True, если текст существует где-то на странице и False, если текст не 'т ...

Ваш ответ на вопрос