2012-11-05 20 views

Odpowiedz

1

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ść”);

+0

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 ... –

-1

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

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()); 
    } 
+0

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? –

+0

Tak, wolę ostatnią z powyższych odpowiedzi –

+0

To jest lepsze rozwiązanie, ponieważ może zostać użyte dla wielu wartości tekstowych –

1

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'])); 
5

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)); 
+0

Nie powinno być: String bodyText = driver.findElement (By.tagName ("body")) .getText(); Assert.assertTrue (true, bodyText.contains (text)); – Cagy79

+0

To nie działa w Edge – SOAlgorithm

0

Dla programistów Ruby oto jak można twierdzić. musi zawierać MiniTest uzyskać twierdzi

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

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

0

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