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

时间:2016-02-10 06:03:32

标签: javascript java html selenium webdriver

我需要将当前网址(以chrome显示)与特定的href链接进行比较。 特定的href链接包含两个网址!  i need to get the first link (there are two links in href)

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

实施应该在 java 中使用 Selenium ......

感谢!!!

2 个答案:

答案 0 :(得分:0)

您可以使用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并做你想做的事。

谢谢你, 穆拉利

答案 1 :(得分:0)

它不包含2个网址,它包含1个网址。

之后的部分?是URL参数(See Understanding URLs on the MDN)。你的有点奇怪,因为它们通常是键/值对,但它仍然有效。

获取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"));
    }