web-dev-qa-db-de.com

Wie kann ich überprüfen, ob auf der Seite mit Selenium Text vorhanden ist oder nicht?

Ich verwende Selenium WebDriver. Wie kann ich überprüfen, ob Text auf der Seite vorhanden ist oder nicht? Vielleicht empfiehlt mir jemand nützliche Ressourcen, wo ich darüber lesen kann. Vielen Dank

41
khris

Mit XPath ist es nicht so schwer. Suchen Sie einfach nach allen Elementen, die den angegebenen Text enthalten:

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

Die offizielle Dokumentation unterstützt solche Aufgaben zwar nicht sehr, ist aber trotzdem das grundlegende Werkzeug.

Die JavaDocs sind größer, aber es dauert einige Zeit, um alles nützliche und unbrauchbare durchzugehen.

Um XPath zu lernen, folgen Sie einfach folgen Sie dem Internet . Die Spezifikation ist auch eine überraschend gute Lektüre.


EDIT:

Wenn Sie nicht möchten, dass Ihr Implicit Wait den obigen Code warten soll, bis der Text erscheint, können Sie Folgendes tun:

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

So können Sie überprüfen, ob der erforderliche Text auf der Webseite vorhanden ist oder nicht.

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

Sie können den Haupttext der gesamten Seite folgendermaßen abrufen:

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

dann verwenden Sie eine Aussage, um es so zu überprüfen:

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

Natürlich können Sie spezifisch sein und den Text eines bestimmten DOM-Elements abrufen und dann überprüfen, anstatt die gesamte Seite abzurufen.

12
JCarter

Im Selenium 2-Web-Treiber ist kein verifyTextPresent vorhanden. Sie müssen also nach dem Text in der Seitenquelle suchen. Nachfolgend einige praktische Beispiele.

Python

In Python-Treiber können Sie die folgende Funktion schreiben:

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

dann verwenden Sie es als:

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

Um einen regulären Ausdruck zu verwenden, versuchen Sie Folgendes:

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

Siehe: FooTest.py file für ein vollständiges Beispiel.

Oder prüfen Sie unten einige andere Alternativen:

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

Quelle: Eine andere Möglichkeit, zu überprüfen (Assert), ob Text mit Selenium Python vorhanden ist

Java

In Java die folgende Funktion:

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

und die Verwendung wäre:

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");
}

Quelle: Verwendung von verifyTextPresent in Selenium 2 Webdriver


Behat

Für Behat können Sie die Mink-Erweiterung verwenden. In MinkContext.php sind die folgenden Methoden definiert:

/**
 * 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));
}
6
kenorb

In Python können Sie einfach wie folgt prüfen:

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

self.assertTrue('your text' in self.Selenium.page_source)
2
Adiyat Mubarak

In c # hilft Ihnen dieser Code zu überprüfen, ob der erforderliche Text auf der Webseite vorhanden ist oder nicht.

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

Python:

driver.get(url)
content=driver.page_source
if content.find("text_to_search"): 
    print("text is present in the webpage")

Lade die HTML-Seite herunter und benutze find ()

1
Dipankar Nalui

Sie können wie folgt nach Text in Ihrer Seitenquelle suchen: 

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

JUnit + Webtreiber

assertEquals(driver.findElement(By.xpath("//this/is/the/xpath/location/where/the/text/sits".getText(),"insert the text you're expecting to see here");

Wenn Ihr erwarteter Text nicht mit dem Xpath-Text übereinstimmt, teilt Ihnen webdriver mit, was der Text tatsächlich war und was Sie erwartet hatten.

0
Dan
  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");
    }
0
fart