【问题标题】:How to get id from href (selenium)如何从 href (selenium) 获取 id
【发布时间】:2018-05-12 22:46:25
【问题描述】:

我对 java 中的 selenium 有一个小问题。

在我的程序中,我有很多href:

/cms/shops/edit?id=xxx
<a href="/cms/shops/edit?id=736" class="btn btn-sm btn-primary">Edit</a>
<a href="/cms/shops/edit?id=321" class="btn btn-sm btn-primary">Edit</a>
<a href="/cms/shops/edit?id=123" class="btn btn-sm btn-primary">Edit</a>

例如,我如何才能在 Selenium (Java) 中仅获取 xxx(id) 值并添加到数组中??

【问题讨论】:

    标签: java html selenium href


    【解决方案1】:

    根据您共享的 HTML 仅打印 xxx(id) 值,您可以使用以下代码块:

    List<WebElement> linkList = driver.findElements(By.cssSelector("a.btn.btn-sm.btn-primary[href^='/cms/shops/edit?id']"));
    List<Integer> idListFromLink = new ArrayList<Integer>();
    for(WebElement link : linkList){
        String my_href = link.getAttribute("href");
        String[] parts = my_href.split("=");
        idListFromLink.add(Integer.parseInt(parts[1]));
    }
    System.out.println(idListFromLink);
    

    【讨论】:

    • 嗨,我尝试了你的解决方案,但我得到了异常:线程“main”中的异常 org.openqa.selenium.InvalidSelectorException:给定 css 选择器表达式“a.btn.btn-sm.btn-primary [href^=/cms/shops/edit?id=]" 无效:SyntaxError: 'a.btn.btn-sm.btn-primary[href^=/cms/shops/edit?id=]' is not a有效选择器
    • 错过了报价,尝试更新的答案,让我知道状态
    【解决方案2】:

    代码片段:

    -ArrayList 实现:

            List<WebElement> linkList = driver.findElements(By.cssSelector("a[class^='btn btn-sm']"));
            List<Integer> idListFromLink = new ArrayList<Integer>();
            for(WebElement link : linkList){
                String [] temp = link.getAttribute("href").split("=");
                int id = Integer.valueOf(temp[temp.length - 1]);
                idListFromLink.add(id);
            }
    

    -Array 实现:

                List<WebElement> linkList = driver.findElements(By.cssSelector("a[class^='btn btn-sm']"));
                int listSize = linkList.size();
                int [] idListFromLink = new int[listSize];
                for(int i = 0; i < listSize; i++){
                    String [] temp = linkList.get(i).getAttribute("href").split("=");   //split the href value using delimeter '='
                    int id = Integer.valueOf(temp[temp.length - 1]); //get the last item
                    idListFromLink[i] = id;
                }
    

    【讨论】:

    • 您好,感谢您的回答和解决方案,但是当我在控制台中尝试打印 id 值 (idListFromLink.get(0)) 时出现异常:线程“main”中的异常 java.lang.IndexOutOfBoundsException:索引:0,大小:0
    • 我犯了一个错误。现在看看更新的代码,让我知道。
    • 再次出现同样的异常或当我使用 idListFromLink.length 或 idListFromLink.size() 我得到 = 0
    • 将cssSelector改为By.cssSelector("a[class^='btn btn-sm']")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2017-12-24
    • 2015-06-15
    • 2022-06-22
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多