Selenium中的'断言真'概念

时间:2015-10-02 09:08:11

标签: java selenium testng

我正在使用selenium来比较web-table中的名称,我已经声明了具有名字和名字的局部变量,并将其与网络表中存在的值进行比较。

对于正流程,我的代码正常运行并显示预期结果。

对于否定流,其中声明的字符串lastname中的名称与Web表中存在的值不匹配,则不显示预期结果。 assertTrue中显示的消息未打印。我的日食显示testng正在运行,但之后没有任何事情发生。

我假设web-table除了'Product'之外有任何姓氏然后找到记录应该得到false值,它应该移到'AssertTrue'行并且应该打印stmt Lastname is not as expected。< / p>

@Test 
public void abc(){
    String firstname="Test";
    String lastname="Product";

    boolean recordfound= false;

    String firstpart="//*[@id='fchArea']/table/tbody/tr[";
    String secondpart="]/td[1]/a";
    int i=8;
    while (iselementpresent(firstpart+i+secondpart)){
        //firstname
        String name1=driver.findElement(By.xpath(firstpart+i+secondpart)).getText();

        if (name1.equals(firstname)){
            String altofsecondpart = firstpart+i+secondpart.replace("td[1]", "td[2]");
            String name2=driver.findElement(By.xpath(altofsecondpart)).getText();

            if(name2.equals(lastname)){
                System.out.println("secondcase pass");
                recordfound = true;
                break;
            }
        }   
    }
    Assert.assertTrue(recordfound, "Lastname is not as expected");
}

public boolean iselementpresent(String xpath){  
    int lst=driver.findElements(By.xpath(xpath)).size();
    if(lst == 0){
        return false;
    }
    else{
        return true;
    }   
}

1 个答案:

答案 0 :(得分:0)

你的while循环继续无限,并且总是检查索引8的元素,因为你修复了i值。所以你应该增加或减少我的价值。但是在那种情况下如果行号不存在则会给出找不到元素的错误。

因此,最好的方法是捕获Web表中的行数,然后迭代循环。

谢谢, -Sadik