可能是一个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>
有人可以指出我的方式错误吗?
答案 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");
如果这回答你的问题,请告诉我。