HtmlUnit:检查 HtmlElement 是否为 HtmlAnchor
HtmlUnit: Check whether the HtmlElement is HtmlAnchor
我有一个 HtmlElement。
HtmlElement 有时是 table/cell/etc,有时是锚点 link。
如何检查 HtmlElement 是否为 HtmlAnchor?
我能想到的唯一方法是将 HtmlElement 转换为 HtmlAnchor 并查看它是否导致 ClassCastException。这不是一个好的编码标准,因为我有未使用的变量 anchorLink
final HtmlElement htmlElement = htmlPage.getFirstByXPath(String.format("//*[text()='%s']", "textName"));
try {
HtmlAnchor anchorLink = (HtmlAnchor) htmlElement;
System.out.println("HtmlElement is an anchor link!");
} catch (ClassCastException e) {
System.out.println("HtmlElement is not an anchor link!");
}
您可以使用instanceof
运算符来检查获取的元素是否为锚点。
调整您的代码会导致类似于
final HtmlElement htmlElement = htmlPage.getFirstByXPath(String.format("//*[text()='%s']", "textName"));
if (htmlElement instanceof HtmlAnchor) {
System.out.println("HtmlElement is an anchor link!");
} else {
System.out.println("HtmlElement is NOT an anchor link!");
}
作为旁注,我建议使用简单的 String
连接:
String text = "textName";
final HtmlElement htmlElement = htmlPage.getFirstByXPath("//*[text()=" + text + "]");
我有一个 HtmlElement。
HtmlElement 有时是 table/cell/etc,有时是锚点 link。
如何检查 HtmlElement 是否为 HtmlAnchor?
我能想到的唯一方法是将 HtmlElement 转换为 HtmlAnchor 并查看它是否导致 ClassCastException。这不是一个好的编码标准,因为我有未使用的变量 anchorLink
final HtmlElement htmlElement = htmlPage.getFirstByXPath(String.format("//*[text()='%s']", "textName"));
try {
HtmlAnchor anchorLink = (HtmlAnchor) htmlElement;
System.out.println("HtmlElement is an anchor link!");
} catch (ClassCastException e) {
System.out.println("HtmlElement is not an anchor link!");
}
您可以使用instanceof
运算符来检查获取的元素是否为锚点。
调整您的代码会导致类似于
final HtmlElement htmlElement = htmlPage.getFirstByXPath(String.format("//*[text()='%s']", "textName"));
if (htmlElement instanceof HtmlAnchor) {
System.out.println("HtmlElement is an anchor link!");
} else {
System.out.println("HtmlElement is NOT an anchor link!");
}
作为旁注,我建议使用简单的 String
连接:
String text = "textName";
final HtmlElement htmlElement = htmlPage.getFirstByXPath("//*[text()=" + text + "]");