Ich muss einen Text auf der Seite durch WebDriver überprüfen. Ich mag es, das Ergebnis als boolesch (wahr oder falsch) zu sehen. Kann jemand dabei helfen, indem er den WebDriver-Code gibt?So überprüfen Sie einen Text auf der geladenen Seite über WebDriver
Antwort
Wenn Sie nicht über den Standort des Textes vorhanden sind gestört, dann könnten Sie Driver.PageSource Eigenschaft verwenden, wie unten:
Driver.PageSource.Contains („erwartete Nachricht“);
Gibt es eine Möglichkeit, den Text ohne Seitenquelle zu finden und mehr über i need true zu drucken, wenn der Text irgendwo in der Seite und Falsch liegt vor, wenn der Text doen't ... –
Hinweis: Nicht in boolean
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");
}
Ja, Sie können tun, was boolean zurückgibt. Die folgende Java-Code in WebDriver mit TestNG oder JUnit tun können:
protected boolean isTextPresent(String text){
try{
boolean b = driver.getPageSource().contains(text);
return b;
}
catch(Exception e){
return false;
}
}
nun die obige Methode aufrufen, wie unten:
assertTrue(isTextPresent("Your text"));
Oder gibt es eine andere Art und Weise. Ich denke, das ist der bessere Weg:
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());
}
Ihre Frage scheint einige Informationen zu fehlen. 1) Welche Sprache benutzen Sie? 2) Verwenden Sie ein Testframework als JUnit oder TestNG? –
Ja, ich bevorzuge die letzte der obigen Antworten –
Dies ist eine bessere Lösung, da es für mehrere Textwerte verwendet werden kann –
Driver.getPageSource() ist eine schlechte Möglichkeit, Text vorhanden zu verifizieren. Angenommen, Sie sagen, driver.getPageSource().contains("input");
Das nicht überprüft, "Eingabe" ist auf dem Bildschirm vorhanden, nur dass "Eingabe" in der HTML vorhanden ist, wie ein Eingabe-Tag.
ich in der Regel Text auf einem Element überprüfen, indem Sie mithilfe von XPath:
boolean textFound = false;
try {
driver.findElement(By.xpath("//*[contains(text(),'someText')]"));
textFound = true;
} catch (Exception e) {
textFound = false;
}
Wenn Sie eine genaue Text Spiel wollen, entfernen Sie einfach die Funktion contains:
driver.findElement(By.xpath("//*[text()='someText']));
Als zmorris driver.getPageSource().contains("input");
Punkte ist nicht die richtige Lösung, weil es in der ganzen HTML, nicht nur die Texte darauf sucht. Ich schlage vor, diese Frage zu prüfen: how can I check if some text exist or not in the page? und die Recomended Weise erklärt Slanec:
String bodyText = driver.findElement(By.tagName("body")).getText();
Assert.assertTrue("Text not found!", bodyText.contains(text));
Sollte es nicht sein: String bodyText = driver.findElement (By.tagName ("body")) .getText(); Assert.asserTrue (true, bodyText.contains (Text)); – Cagy79
Dies funktioniert nicht in Edge – SOAlgorithm
Für Ruby-Programmierer hier, wie Sie behaupten können. Haben Minitest enthalten die behauptet
assert(@driver.find_element(:tag_name => "body").text.include?("Name"))
zu bekommen Below Code besten geeignet ist, einen Text auf Seite zu überprüfen. Sie können einen beliebigen von 8 Locators nach Belieben verwenden. ..
String Verifytext = driver.findElement (By.tagName ("body")) getText() stutzen(); Assert.assertEquals (Verifytext „Fügen Sie den Text hier die überprüft werden muss“);
Wenn Sie überprüfen nur Objekte angezeigt (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;
}
In welcher Programmiersprache? Welcher Browser? Wird der Text immer im selben Element angezeigt? Woher? Welches Element? – Arran