如何在 Selenium Web 驱动程序中处理与空白目标的链接
How to Handle Links with Blank Targets in Selenium Web driver
我正在检查页面上的活动链接..使用 htttpurlconnection。
我遇到过一种情况。
你可以看到一些带有 target="_blank" 的链接
我不想将此类链接包含到链表中。我试图使用 target.But 的 getattribute 属性 排除相同的内容,但它不起作用。
List <WebElement> activelinks = new ArrayList<WebElement>();
for (int i=0;i<linkslist.size();i++) {
system.out.println("link address of full links and images>>> " + linkslist.get(i).getAttribute("href"));
if (linkslist.get(i).getAttribute("href")!=null && (linkslist.get(i).getAttribute("target")!="_blank" )) {
activelinks.add(linkslist.get(i));
System.out.println("active link " +
activelinks.get(i).getAttribute("href"));
}
}
最简单的选项是在 XPath selector 级别执行过滤,如果您想匹配以下链接:
- 有
href
属性
和
target
属性不等于 _blank
您可以匹配这样简单的链接:
//a[@href and not(@target='_blank')]
关于您的方法,您应该使用String.equals()方法进行比较,建议代码为:
List<WebElement> activeLinks = linkslist
.stream()
.filter(link -> link.getAttribute("href") != null)
.filter(link -> !link.getAttribute("target").equals("_blank"))
.collect(Collectors.toList());
我正在检查页面上的活动链接..使用 htttpurlconnection。
我遇到过一种情况。
你可以看到一些带有 target="_blank" 的链接
我不想将此类链接包含到链表中。我试图使用 target.But 的 getattribute 属性 排除相同的内容,但它不起作用。
List <WebElement> activelinks = new ArrayList<WebElement>();
for (int i=0;i<linkslist.size();i++) {
system.out.println("link address of full links and images>>> " + linkslist.get(i).getAttribute("href"));
if (linkslist.get(i).getAttribute("href")!=null && (linkslist.get(i).getAttribute("target")!="_blank" )) {
activelinks.add(linkslist.get(i));
System.out.println("active link " +
activelinks.get(i).getAttribute("href"));
}
}
最简单的选项是在 XPath selector 级别执行过滤,如果您想匹配以下链接:
- 有
href
属性
和
target
属性不等于_blank
您可以匹配这样简单的链接:
//a[@href and not(@target='_blank')]
关于您的方法,您应该使用String.equals()方法进行比较,建议代码为:
List<WebElement> activeLinks = linkslist
.stream()
.filter(link -> link.getAttribute("href") != null)
.filter(link -> !link.getAttribute("target").equals("_blank"))
.collect(Collectors.toList());