我正在使用硒java 3.141.59和testng 6.14.3。
测试页可能显示为
if let locationIndex = blueMarkArray.firstIndex(of: self.atPoint(locationUser)) {
let location = blueMarkArray[locationIndex]
someNode.position = location.position
}
或
<tbody>
<tr>
<td class="S_line1">
<strong class="W_f12">82</strong>
<span class="S_txt2">fans</span>
</td>
</tr>
</tbody>
如果“粉丝”具有href链接,那么我将单击“粉丝”链接。如果没有,我将跳过此步骤并继续执行其他操作。
ExpectedConditions.presenceOfElementLocated在这种情况下不可用,因为当找不到href链接并停止测试时,它将引发误解。
答案 0 :(得分:2)
要检查节点href
是否存在,可以使用下面的XPath来标识a
节点,因为href
存在于a
(I' m假设该类在这里是唯一的,如果不是,则使用其他定位符,并在末尾附加//a
:
String xpath = "//td[@class=\"S_line1\"]/a"
您可以像下面这样检查它的存在:
List<WebElement> hrefs = driver.findElements(By.xpath(xpath));
if(hrefs.size() > 0) {
System.out.println("=> The href is present...");
hrefs.get(0).click();
} else {
System.out.println("=> The href is not present...");
}
如果href
不存在,则以上代码不会引发任何错误。因此,您无需在那里处理任何异常。
希望对您有帮助...
答案 1 :(得分:1)
以下代码首先找到表中的所有<a>
标签,如果标签中有href
,则一个接一个地单击它们:
List<WebElement> allAnchorElements = driver.findElements(By.xpath("//table//td[@class='S_line1']/a"));
for(WebElement currElem : allAnchorElements ){
if(currElem.getAttribute("href")){
currElem.click();
}
}
答案 2 :(得分:0)
您仅在寻找具有fans
...的href
元素。
我能想到的最好方法是使用By.linkText()
。
在您的情况下:
try{
WebElement link = driver.findElement(By.linkText("fans"));
System.out.println(link.getAttribute("href"));
link.click();
}
catch(NoSuchElementException e){
System.out.println(e);
}
希望这对您有帮助!