如果Java中的循环直到条件不再有效,则继续使用脚本

时间:2015-10-30 12:51:47

标签: java eclipse selenium if-statement

我试图删除表中的每个(可见)行,直到没有剩下,只有那时我才想继续我的测试用例的其余部分。出于这个原因,我使用了if / else语句。作为此语句的一部分,我需要选择第一行,单击“删除”按钮,然后单击“确定”确认我的操作。然后我想回去检查是否还有第一行,如果是,则重复直到没有更多行。如果没有,则按其他按钮。这是我到目前为止所得到的:

if(driver.findElement(By.xpath("//div[@id='ext-gen445']/div/table/tbody/tr/td[2]/div")) != null) //to determine if there is a first row present
        {
            driver.findElement(By.xpath("//div[@id='ext-gen445']/div/table/tbody/tr/td[2]/div")).click(); // select first row
            driver.findElement(By.xpath("//*[@type='button' and text()='Delete']")).click(); //click delete
            wait.until(ExpectedConditions.elementToBeClickable(By.id("ext-gen483")));

            /** as there is more then one OK button I need the following code to find and click the correct OK button to confirm deleting the row */
            List<WebElement> listOfOKbut = driver.findElements(By.xpath("//*[@class=' x-btn-text' and text()='OK']"));
            if(listOfOKbut.size() >= 2) {
                listOfOKbut.get(1).click(); //click OK button to delete
        } // Now I need to back to see if there is a first row again and repeat this till there are no more rows
else{
// Only when there are no more rows do I want to continue

现在的问题是,当它删除第一行时,它会跳过else语句,并在else语句之后继续测试脚本,即使存在更多行。

此外,当我更改第一行以便找不到该元素时,脚本将完全停止并使用NoSuchElementException。似乎这段代码也是错误的。

有些人可能已经注意到了,我问了很多问题。我还没有接受任何Java培训,但是我很喜欢使用这些东西来测试自动化。

谢谢!

2 个答案:

答案 0 :(得分:1)

你可以使用while循环,如果/ else可能不是你想要的那样

    while(driver.findElement(By.xpath("//div[@id='ext-gen445']/div/table/tbody/tr/td[2]/div")) != null) {
     //element removal code here
   }
   //code you want to run after removing all the elements

答案 1 :(得分:1)

首先,您不使用循环结构。这些是forwhiledo

其次,您使用if / else。如果拳头是真的,它永远不会进入else。这就是为什么它不运行你想要的代码。

我的建议是:

While(visible row == true) {
   delete first row
}

// rest of code.