如何使正确的周期

时间:2018-12-26 07:28:03

标签: java testing

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 *

我试图继续并用记号刹车,但也许做错了事...

1 个答案:

答案 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)。