WebDriverを使用して、ページにあるテキストを確認する必要があります。結果をブール値(trueまたはfalse)として表示するのが好きです。 WebDriverコードを提供することでこれを助けることができる人はいますか?
Zmorrisが指摘しているように、driver.getPageSource().contains("input");
は適切な解決策ではありません。なぜなら、テキスト上のテキストだけでなく、すべてのhtmlを検索するからです。この質問を確認することをお勧めします: ページ内にテキストが存在するかどうかを確認するにはどうすればよいですか? およびSlanecが説明する推奨方法:
String bodyText = driver.findElement(By.tagName("body")).getText();
Assert.assertTrue("Text not found!", bodyText.contains(text));
はい、ブール値を返すことができます。次の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());
}
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']));
存在するテキストの場所を気にしない場合は、以下のようにDriver.PageSourceプロパティを使用できます。
Driver.PageSource.Contains( "expected message");
表示されたオブジェクトのみをチェックする場合(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;
}
For Rubyプログラマーはここでアサートできます。アサートを取得するためにMinitestを含める必要があります
assert(@driver.find_element(:tag_name => "body").text.include?("Name"))
以下のコードは、ページ上のテキストを検証するのに最適な方法です。都合に応じて、8つのロケーターのうちのいずれかを使用できます。
文字列Verifytext = driver.findElement(By.tagName( "body"))。getText()。trim(); Assert.assertEquals(Verifytext、 "検証が必要なテキストをここに貼り付けてください");
注:ブール値ではありません
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");
}