我试图删除表中的每个(可见)行,直到没有剩下,只有那时我才想继续我的测试用例的其余部分。出于这个原因,我使用了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培训,但是我很喜欢使用这些东西来测试自动化。
谢谢!
答案 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)
首先,您不使用循环结构。这些是for
,while
和do
。
其次,您使用if
/ else
。如果拳头是真的,它永远不会进入else
。这就是为什么它不运行你想要的代码。
我的建议是:
While(visible row == true) {
delete first row
}
// rest of code.