Java Iterator weblink - 跳过链接

时间:2017-07-25 01:06:08

标签: java selenium iterator

可能是一个noob问题,但更好的问题,也许会帮助其他人。

我编写了一个脚本,利用Iterator迭代一些锚链接。锚链接由cssSelector传递给迭代器。我遇到的问题是2倍。

首先,第一个锚链接是SKIPPED,并且每跳过第二个锚链接。

其次,当发现我的正则表达式为真时,它会点击错误的条目。

例如,我有一个包含以下链接的表:

一 b C d 1 2 3 4

如果我在循环中执行sys,我会得到以下内容: b d 2 4 等...

有人可以指出我做错了什么,可能是我错过的一个小错误。

代码如下:

该方法由:

调用
sc.searchandclick(".d_ich>div>div>div>div>a", ".*test dropbox1.*");

,方法是:

public String searchandclick(String aCssSelector, String regex) {
    String text = "";


    try {

        List<WebElement> list = driver.findElements(By.cssSelector(aCssSelector));
        //System.out.println(list);
        Iterator<WebElement> iter = list.iterator();
        while (iter.hasNext()) {
            WebElement link = iter.next();
            text = iter.next().getAttribute("title");
            System.out.println(text);
            String regEx = regex;
            //Boolean b = Pattern.matches(regEx, text);

            //if (b == true) {

                //try {
                    //link.click();
                //  break;

                //} catch (Exception e) {
                    //e.printStackTrace();
                //}

            }

        //}

        //return text;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return text;

}

当我看到CSS时,请回复以下内容:

<a class="vui-link" href="folder_submissions_users" title="View a submissions">a</a>
<a class="vui-link" href="folder_submissions_users" title="View b submissions">b</a>
<a class="vui-link" href="folder_submissions_users" title="View c submissions">c</a>
<a class="vui-link" href="folder_submissions_users" title="View d submissions">d</a>
<a class="vui-link" href="folder_submissions_users" title="View 1 submissions">1</a>
<a class="vui-link" href="folder_submissions_users" title="View 2 submissions">2</a>
<a class="vui-link" href="folder_submissions_users" title="View 3 submissions">3</a>
<a class="vui-link" href="folder_submissions_users" title="View test dropbox1 submissions">test dropbox1</a>

有人可以指出我的方式错误吗?

2 个答案:

答案 0 :(得分:1)

你在循环中两次在迭代器上跳过

 WebElement link = iter.next();              //next
 text = iter.next().getAttribute("title");   //next again!!!

答案 1 :(得分:1)

以下是您的问题的答案:

当你while WebElement link = iter.next();循环时,你已经在下一个WebElement上了。因此,在下一行中,您不需要使用iter.next()。您需要做的就是text = link.getAttribute("title");

所以你需要替换:

text = iter.next().getAttribute("title");

由:

text = link.getAttribute("title");

如果这回答你的问题,请告诉我。