假设有一个页面,我想检查一个元素" abc"是否存在于页面上。如果元素不存在,那么我想点击其他元素" xyz",然后打开新页面,我想再次检查元素" abc"出现在页面上。如果再次不存在则单击相同的元素" xyz"这一切都在继续。
我使用while循环,下面是代码。请帮帮我。
在我的下面代码中:" elem_prev"是否每次都要检查的元素是否存在于页面上。 我的代码不起作用,现在它无法在循环中找到元素,但它应该像每个页面上的元素一样。请帮我解释这些概念。代码是否正确?
它表示循环中存在的元素无法定位元素。
Boolean elem_prev = driver.findElements(By.id("TM_TL_DD_WRK_GET_DATA")).size()!=0;
while(elem_prev==false)
{
Thread.sleep(2000);
driver.findElement(By.className("PSHYPERLINK")).click();
Thread.sleep(2000);
Alert a = driver.switchTo().alert();
a.dismiss();
Thread.sleep(10000);
elem_prev = driver.findElements(By.id("TM_TL_DD_WRK_GET_DATA")).size()!=0;
}
答案 0 :(得分:0)
我建议您在循环中找到这样的元素:
WebElement element1 = driver.findElements(By.id("TM_TL_DD_WRK_GET_DATA"));
WebElement element2 = driver.findElement(By.className("PSHYPERLINK"));
while(element1==false){
Thread.sleep(2000);
element2.click();
Thread.sleep(2000);
Alert a = driver.switchTo().alert();
a.dismiss();
Thread.sleep(10000);
element1.size()!=0;
}
然后在循环开始之前尝试SystemOutPrintln(element1);
和/或SystemOutPrintln(element2);
以确保它实际找到该元素。
如果它不打印元素,那么问题不在于循环,而在于您尝试查找元素的方式。
这将是重要信息,因为您可以尝试以其他方式查找元素。