Potrzebuję zweryfikować tekst obecny na stronie poprzez WebDriver. Lubię zobaczyć wynik jako boolean (true lub false). Czy ktoś może w tym pomóc, podając kod WebDriver?Jak sprawdzić tekst na wczytanej stronie przez WebDriver
Odpowiedz
Jeśli nie przeszkadza o lokalizacji obecny tekst, a następnie można użyć własności Driver.PageSource jak poniżej:
Driver.PageSource.Contains („Oczekuje wiadomość”);
Czy istnieje sposób na znalezienie tekstu bez źródła strony i więcej, muszę wydrukować True, jeśli tekst istnieje gdziekolwiek na stronie i Fałsz, jeśli tekst nie ... –
Uwaga: Nie w logiczną
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");
}
Tak, można zrobić to, co zwraca wartość logiczną. Poniższy kod Java w WebDriver z TestNG i JUnit można zrobić:
protected boolean isTextPresent(String text){
try{
boolean b = driver.getPageSource().contains(text);
return b;
}
catch(Exception e){
return false;
}
}
Teraz nazywają się powyższy sposób jak poniżej:
assertTrue(isTextPresent("Your text"));
Albo, że istnieje inny sposób. Myślę, że to jest lepszy sposób:
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());
}
Twoje pytanie najwyraźniej nie zawiera niektórych informacji. 1) W jakim języku korzystasz? 2) Czy korzystasz z jakiejkolwiek struktury testowej jako JUnit lub TestNG? –
Tak, wolę ostatnią z powyższych odpowiedzi –
To jest lepsze rozwiązanie, ponieważ może zostać użyte dla wielu wartości tekstowych –
Driver.getPageSource() to zły sposób na weryfikację tekstu. Załóżmy, że mówisz, driver.getPageSource().contains("input");
To nie oznacza, że "wejście" jest obecne na ekranie, tylko że "wejście" jest obecne w html, jak tag wejściowy.
Zwykle sprawdza tekst na elemencie za pomocą XPath:
boolean textFound = false;
try {
driver.findElement(By.xpath("//*[contains(text(),'someText')]"));
textFound = true;
} catch (Exception e) {
textFound = false;
}
Jeśli chcesz dokładne dopasowanie tekstu, po prostu usuń zawiera funkcję:
driver.findElement(By.xpath("//*[text()='someText']));
Jak zmorris punktów driver.getPageSource().contains("input");
nie jest właściwe rozwiązanie, ponieważ przeszukuje cały HTML, a nie tylko teksty na nim. Proponuję sprawdzić to pytanie: how can I check if some text exist or not in the page? i Zalecanych sposób wytłumaczyć Slanec:
String bodyText = driver.findElement(By.tagName("body")).getText();
Assert.assertTrue("Text not found!", bodyText.contains(text));
Nie powinno być: String bodyText = driver.findElement (By.tagName ("body")) .getText(); Assert.assertTrue (true, bodyText.contains (text)); – Cagy79
To nie działa w Edge – SOAlgorithm
Dla programistów Ruby oto jak można twierdzić. musi zawierać MiniTest uzyskać twierdzi
assert(@driver.find_element(:tag_name => "body").text.include?("Name"))
Poniżej kod jest najodpowiedniejszym sposobem sprawdzenia tekstu na stronie. Możesz użyć dowolnego z 8 lokalizatorów zgodnie z twoją wygodą.
String Verifytext = driver.findElement (By.tagName ("body")). GetText(). Trim(); Assert.assertEquals (Verifytext, "Wklej tutaj tekst, który należy zweryfikować");
Jeśli chcesz sprawdzić wyświetlane tylko obiekty (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;
}
w jakim języku programowania? Jaka przeglądarka? Czy tekst zawsze pojawia się w tym samym elemencie? Gdzie? Jaki element? – Arran