0

我正在尝试使用 webdriver 验证加载的页面上是否存在一行文本。我创建了一个函数 - isTextPresent,然后在同一方法中调用了该函数。

Eclipse 提示我错误:方法 IsTrue(boolean) 未定义类型 Assert

  1. 请告诉我为什么它不起作用以及我应该如何解决它。
  2. 验证网页上的文本呈现的最佳方法是什么?

    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: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 回答