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 + "]");