gpt4 book ai didi

java - 使用 Selenium 和 JUnit 解析 HTML 文档中的链接

转载 作者:行者123 更新时间:2023-11-30 01:55:43 26 4
gpt4 key购买 nike

if (hrefAttr.contains("?")) 处出现 NullPointerException

我遇到了问题。我使用 selenium 和 JUnit 来解析链接,并将它们与 CSV 文件提供的链接列表进行比较。

一切都很顺利,直到我意识到我必须分别测试 URL 和查询字符串。我尝试创建一个 if 语句,说明 href 属性是否包含“?”将整个 URL 拆分为包含两个字符串的数组。 URL 目标是第一个索引的字符串,查询字符串是第二个索引的字符串。并返回 URL 目标并将其附加到 ID。如果没有“?”在 URL 字符串中,只需返回 URL 字符串并将其附加到 ID

我认为逻辑看起来很准确,但我一直在第 76 行返回空指针异常(href.contains("?") 条件所在的位置。代码如下:

public static ArrayList<String> getURLSFromHTML(WebDriver driver) {

// prepares variable for array of html link URLs
ArrayList <String> pageLinksList = new ArrayList<String>();

// prepares array to place all of the <a></a> tags found in the HTML
List <WebElement> aElements = driver.findElements(By.tagName("a"));

// loops through all the <a></a> tags found in the HTML
for (WebElement aElement : aElements) {

/*
* grabs the href attribute value and stores it into a variable
* grabs the QA_ID attribute value and stores it in a variable
* concatenates the QA_ID value with the href value and stores them in a variable
*/
String hrefAttr = aElement.getAttribute("href");
String QA_ID = aElement.getAttribute("QA_ID");
String linkConcat;

if (hrefAttr.contains("?")) {
String[] splitHref = hrefAttr.split("\\?");
String URL = splitHref[0];
linkConcat = QA_ID + "_" + URL;
} else {
linkConcat = QA_ID + "_" + hrefAttr;
}

String urlIgnoreAttr = aElement.getAttribute("URL_ignore");
String combIgnore = QA_ID + "_" + urlIgnoreAttr;
String combIgnoreVal = "ignore";


/*
* if the QA_ID is not null then add value to pageLinksList
* if URL_ignore attribute="ignore" in html, then add combIgnore value to pageLinksList
* else add linkConcat to pageLinksList
*/
if(!Objects.isNull(QA_ID)) {
if (Objects.equals(urlIgnoreAttr, combIgnoreVal)) {
pageLinksList.add(combIgnore);
}else {
pageLinksList.add(linkConcat);
}
}
}

System.out.println(pageLinksList);
return pageLinksList;

}

请帮忙!

最佳答案

显而易见的解决方案是检查 null:


if (hrefAttr != null && hrefAttr.contains("?")) {
String[] splitHref = hrefAttr.split("\\?");
String URL = splitHref[0];
linkConcat = QA_ID + "_" + URL;
} else {
linkConcat = QA_ID + "_" + hrefAttr;
}

没有 href 属性的 anchor 标记仍然有效。如果没有 html 源代码,我们无法解释缺少 href 属性的原因。 else 分支不会抛出 NPE,但对于 hrefAttr == null 来说它是没有用的。

关于java - 使用 Selenium 和 JUnit 解析 HTML 文档中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54610516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com