【问题标题】:How do you check if search box text matches the link?如何检查搜索框文本是否与链接匹配?
【发布时间】:2019-10-07 13:28:41
【问题描述】:

我有一个搜索框:例如:当您输入文本时:BestBuy 并单击搜索,并且几个链接显示为 BestBuy 链接。您如何验证文本与第一个链接匹配。类似于谷歌搜索引擎。

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;
}

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

【问题讨论】:

  • 能否请您发布错误,以便我们知道错误是什么。

标签: java testing appium qa


【解决方案1】:

当搜索 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();

【讨论】:

    【解决方案2】:

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

    你的代码应该是这样的:

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 2010-10-13
      • 2018-02-28
      相关资源
      最近更新 更多