如何在java中使用Selenium获取href链接的一部分

How to get part of href link using Selenium in java?

本文关键字:href 获取 链接 一部分 Selenium java      更新时间:2023-09-26

我需要将当前网址(在chrome中)与特定的href链接进行比较。特定的 HREF 链接包含两个 URL! 我需要获取第一个链接(href 中有两个链接)

<a href="http://pubcontentqa.perion.com/dz2/html/interstitial.html?http://www.bbc.com/news/entertainment_and_arts" target="_blank">

实现应该在Java中使用Selenium...

谢谢!!!

您可以使用 get 属性从网页获取 href

。 例如。
String string=driver.findElement(By.xpath("//path of your element")).getAttribute("href");

如前所述,此字符串包含两个 url,因此可以拆分它们

String string = "004-034556";
String[] parts = string.split("?"); // as per condition, split here
String url1 = parts[0]; //URL one
String url2 = parts[1]; // URL two

现在你有 url1 和 url2 并做你想做的事。

谢谢穆拉利

它不包含 2 个 URL,它包含 1 个 URL。

? 后面的部分是 URL 参数(请参阅了解 MDN 上的 URL)。 你的有点奇怪,因为它们通常是键/值对,但它仍然有效。

获取 URL 参数的正确方法是像这样解析 URL:

    String hrefAttribute = driver.findElement(By.cssSelector("YOUR_LOCATOR")).getAttribute("href");
    URL hrefAsURL = new URL(hrefAttribute);
    String urlParameters = hrefAsURL.getQuery();

然后,如果您有一系列键/值对(这是您通常看到的),则可以对urlParameters执行其他操作,例如将它们放在Map中以便在其他地方使用:

    Map<String, String> parameterMap = new HashMap<String, String>();
    String[] keyValuePairs = urlParameters.split("&");
    for (String joinedPair : keyValuePairs) {
        String[] separatedPair = joinedPair.split("=");
        parameterMap.put(URLDecoder.decode(separatedPair[0], "UTF-8"), URLDecoder.decode(separatedPair[1], "UTF-8"));
    }