您如何检查搜索框文字是否与链接匹配?

时间:2019-05-21 07:40:11

标签: java testing appium qa

我有一个搜索框:例如:当您输入文字时:BestBuy并单击搜索,然后两个链接显示为BestBuy链接。您如何验证与第一个链接匹配的文本。与Google搜索引擎类似。

public boolean check(String enterNameOfLink, String matchText) {
    return check.Matches(matchText, enterNameOfLink);

    Matches(String textToCheck, MobileElment link) {
        boolean check = false;
        for(int i = 0; i < link.lenght; i++){
            match = element[i].getText().trim().equalsIgnoreCase(textToCheck);
            if(check){
                return match;
            }
        }
    }
    return false;
}

我收到一个不匹配的错误。

2 个答案:

答案 0 :(得分:0)

您的if条件是布尔值check,并且您已将其初始化为false,因此您的if条件永远不会成立,并且不需要添加多个在代码中返回return语句时,如果文本匹配,则可以更改boolean的值,否则它已经是false。

您的代码应类似于:

public boolean check(String enterNameOfLink, String matchText) { 
    boolean match = false;

    for(int i = 0; i < link.lenght; i++){
        if(element[i].getText().trim().equalsIgnoreCase(textToCheck)){
            match = true;
        }
    }
    return match;
}

答案 1 :(得分:0)

搜索BestBuy时,它会显示几个链接。应该增加一个等待时间。

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
            var element = wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//ul[@class = 'sbsb_b']")));

通过TagName获取所有列表项

 var listElement = element.FindElements(By.TagName("li"));

用户操作类,将鼠标悬停在链接上

Actions action = new Actions(driver);

从列表中获取第一个元素的文本

var firstElement = listElement[linkNumber].Text;

用户断言以查看预期结果是否与实际结果相同

Assert.AreEqual(matchText,firstElement);

如果需要单击第一个链接

 action.MoveToElement(firstElement ).Click().Perform();