0

webdriver を使用して、読み込まれたページにテキスト行が存在することを確認しようとしています。関数を作成しました- isTextPresent、次に同じメソッド内で関数を呼び出しました。

Eclipse からエラーが表示されました。メソッド IsTrue(boolean) は、タイプ Assert に対して未定義です

  1. なぜうまくいかないのか、どうすれば直せばよいのか教えてください。
  2. Web ページ上のテキスト表示を検証するための最良の方法は何ですか?

    2a. @Test最初のコード フラグメント内のテキスト表示を確認することは可能ですか?

    2b. この場合、どのタイプ##メソッドの見出し##を使用する必要がありますか(パブリック、プライベート、または保護)?

私のコードフラグメント:

import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.*;

import org.junit.Before;
import org.junit.After;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class selftechyTestng 
{
    private WebDriver driver;
    private String baseUrl;

    @Before
    public void setUp() throws Exception
    {
        driver = new FirefoxDriver();
        baseUrl = "http://selftechy.com/";
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }

       //First Test Method 
       @Test
    public void searchElements() throws Exception{
        driver.get(baseUrl);
        driver.findElement(By.xpath("//a[@title='Selenium']")).click();

    }



    @Test
    public boolean isTextPresent(String txtValue){
         try{
             boolean b = driver.getPageSource().contains(txtValue);
             return b;
         }
         catch (Exception e){
             return false;
         }
         Assert.IsTrue(isTextPresent("TestNG (Next Generation Testing Framework) – Understanding Annotations")); 


    }



}

関数isElementPresentの呼び出しを機能させるために行った変更searchElements() メソッド内にassertTrue()メソッドを追加する

 assertTrue(isTextPresent(txtValue));

メソッド isElementPresent

public boolean isTextPresent(String str1)
    {
         try
         {
             driver.get(baseUrl);
             driver.findElement(By.xpath("//a[@title='Selenium']")).click();
             b = driver.getPageSource().contains(str1);

             if(b){
                 System.out.println("text presented on the page");
             }
             else{
                 System.out.println("text did not present on the page");
             }
             return b;
         }
         catch (Exception e)
         {
             System.out.println(e.getMessage());
             return b;
         }

         //return b;
     }
4

3 に答える 3

2

または、これを行うことができます。まず、@Testメソッド内の注釈を削除Assertし、最後に を削除します。

public boolean isTextPresent(String txtValue){
         boolean b = false;
     try{
         b = driver.getPageSource().contains(txtValue);
         return b;
     }
     catch (Exception e){
         System.out.println(e.getMessage());
     }     
     finally{
      return b;
     }
}

次に、テストは次のようになります

 @Test
public void searchElements() throws Exception{
    driver.get(baseUrl);
    driver.findElement(By.xpath("//a[@title='Selenium']")).click();
    Assert.IsTrue(isTextPresent("TestNG (Next Generation Testing Framework) – Understanding Annotations"));
}
于 2013-05-21T09:39:04.030 に答える
1

私はあなたに手がかりを与えているだけです...このようにテキストをアサートできます。

assertEquals(txtValue, "TestNG (Next Generation Testing Framework) – Understanding Annotations");

アサーションの詳細については、次のリンクを参照してください: http://testng.org/javadoc/org/testng/Assert.html

使用できますassertEquals (String1, String2)。このリンクを参照してください: Java: Is assertEquals(String, String) は信頼できますか?

-ヴィクラム

于 2013-05-21T03:49:33.920 に答える
-2

C# の例

String OrgName = driver.FindElement(By.Id("")).GetAttribute("")
Assert.True(driver.FindElement(By.XPath("")).Text.Contains(OrgName));
于 2014-12-01T11:36:57.017 に答える