WebDriver を使用して、ページに存在するテキストを確認する必要があります。結果をブール値 (true または false) として表示するのが好きです。WebDriverコードを提供することで、誰でもこれを助けることができますか?
8 に答える
zmorris ポイントdriver.getPageSource().contains("input");
は、テキストだけでなくすべての html を検索するため、適切なソリューションではありません。この質問を確認することをお勧めします:ページにテキストが存在するかどうかを確認するにはどうすればよいですか?
Slanec によって説明された推奨される方法:
String bodyText = driver.findElement(By.tagName("body")).getText();
Assert.assertTrue("Text not found!", bodyText.contains(text));
はい、ブール値を返すことができます。TestNG または JUnit を使用した WebDriver の次の Java コードで実行できます。
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.PageSource プロパティを使用できます。
Driver.PageSource.Contains("予期されるメッセージ");
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']));
注: ブール値ではありません
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");
}
表示されたオブジェクトのみをチェックしたい場合 ( 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;
}
以下のコードは、ページ上のテキストを検証するのに最適な方法です。都合に合わせて、8 つのロケーターから任意の 1 つを使用できます。
String Verifytext= driver.findElement(By.tagName("body")).getText().trim(); Assert.assertEquals(Verifytext, "検証が必要なテキストをここに貼り付けます");