web-dev-qa-db-ja.com

ロードされたページに存在するテキストをWebDriverで確認する方法

WebDriverを使用して、ページにあるテキストを確認する必要があります。結果をブール値(trueまたはfalse)として表示するのが好きです。 WebDriverコードを提供することでこれを助けることができる人はいますか?

9
kranthi kumar

Zmorrisが指摘しているように、driver.getPageSource().contains("input");は適切な解決策ではありません。なぜなら、テキスト上のテキストだけでなく、すべてのhtmlを検索するからです。この質問を確認することをお勧めします: ページ内にテキストが存在するかどうかを確認するにはどうすればよいですか? およびSlanecが説明する推奨方法:

String bodyText = driver.findElement(By.tagName("body")).getText();
Assert.assertTrue("Text not found!", bodyText.contains(text));
6
Ricardo Vila

はい、ブール値を返すことができます。次のJava TestNGまたはJUnitを使用したWebDriverのコードで実行できます。

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());
   }
4
user2027659

Driver.getPageSource()は、存在するテキストを検証するのに悪い方法です。 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']));
1
zmorris

存在するテキストの場所を気にしない場合は、以下のようにDriver.PageSourceプロパティを使用できます。

Driver.PageSource.Contains( "expected message");

1
Pani Kumar

表示されたオブジェクトのみをチェックする場合(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;
    }
0
user2492994

For Rubyプログラマーはここでアサートできます。アサートを取得するためにMinitestを含める必要があります

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

以下のコードは、ページ上のテキストを検証するのに最適な方法です。都合に応じて、8つのロケーターのうちのいずれかを使用できます。

文字列Verifytext = driver.findElement(By.tagName( "body"))。getText()。trim(); Assert.assertEquals(Verifytext、 "検証が必要なテキストをここに貼り付けてください");

0
Ashwini Kapoor

注:ブール値ではありません

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