private void clickOnTask(String param) {
TestData.SIZE_OF_TASKS = ts.listOfTasks().allTasks().size();
boolean found = false;
for (int i = 0; i <= TestData.SIZE_OF_TASKS - 1; i++) {
if (ts.listOfTasks().allNamesForTask().get(i).getAttribute("title").equals(param)) {
found = true;
ts.listOfTasks().allTasks().get(i).click();
}
}
if (found = false) {
js.executeScript("document.getElementsByTagName('td')[" + TestData.SIZE_OF_TASKS + "].scrollIntoView()");
TestData.SIZE_OF_TASKS = ts.listOfTasks().allTasks().size();
}
}
我想 1)将所有已定位的元素与String参数进行比较2)如果没有相同的元素,请按js滚动并再次进行露营
*但是它只比较第一个元素,然后滚动,但是我希望它比较前几个定位的元素,然后执行js *
我试图继续并用记号刹车,但也许做错了事...
答案 0 :(得分:0)
您可以使用一个标志来知道是否没有匹配param
的元素。
在for循环之外,您应该仅在需要时检查此标志以按js滚动(如果根本没有元素与param
匹配)。
boolean found = false;
// Compare all located elements
for (int i=0; i<ts.listOfTasks().allTasks().size(); i++) {
if (ts.listOfTasks().allNamesForTask().get(i).getAttribute("title").equals(param)) {
found = true;
ts.listOfTasks().allTasks().get(i).click();
}
}
// if there are no same, scroll by js
if (!found) {
TestData.SIZE_OF_TASKS=ts.listOfTasks().allTasks().size();
js.executeScript("document.getElementsByTagName('td')["+TestData.SIZE_OF_TASKS+"].scrollIntoView()");
// and to campare again
// call a method that clear and fill task's list with the new data, then
clickOnTask(param);
}
如果在执行for循环found
之后仍然是false
,则表示根本没有标题为param
的元素,因为如果存在至少一个,则将if
设置为found
会执行for循环中的true
。
顺便说一句,而不是多次调用ts.listOfTasks().allTasks()
,您应该将其放在局部变量中并使用这样的变量(如果可能,请使用enhanced for-loop)。