我有一个搜索框:例如:当您输入文字时: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;
}
我收到一个不匹配的错误。
答案 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();