HtmlUnit: проверьте, является ли HtmlElement HtmlAnchor - PullRequest
0 голосов
/ 09 января 2019

У меня есть HtmlElement.

HtmlElement иногда является таблицей / ячейкой / и т. Д., А иногда якорной ссылкой.

Как я могу проверить, является ли 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!");
   }

1 Ответ

0 голосов
/ 09 января 2019

Вы можете использовать оператор 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 + "]");
...