我正试图操纵这些代码块:
List<WebElement> more = driver.findElements(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[4]/button"));
if(more.size()!=0){
driver.findElement(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[4]/button")).click();
}else {
WebElement present = driver.findElement(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody"));
List<WebElement> list = present.findElements(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody/tr"));
System.out.println("Total Number of TR: " + list.size());
}
我希望做的是,在我执行IF语句中的内容之前,我希望每当它看到元素 / html / body / div [1] / div / div时循环它3] / div / div / div [1] / div / div [2] / div [2] / div / div [4] /按钮 它将被点击,如果它不可用然后生病了:
WebElement present = driver.findElement(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody"));
List<WebElement> list = present.findElements(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody/tr"));
System.out.println("Total Number of TR: " + list.size());
嗨,大家好,我想在这里做的更多信息是这个。
我在列表视图中查看特定模块,然后在按钮上有“单击此处获取更多记录” - &gt;它的XPath是/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[4]/button
我希望如果我在列表视图中并且如上所述存在该按钮 - 我想单击它。如果在列表视图中没有按钮“单击此处获取更多记录”(例如,记录仅由5个记录组成,因此没有明确的分页)我想执行代码块
答案 0 :(得分:0)
我从您的查询中理解的是,您希望多次循环您的IF条件语句,直到您的其他条件满足为止。为此,您可以尝试以下代码:
(1) try{
(2) String xpathVAL="/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[4]/button";
(3) int i=1;
(4) while(i!=0){
(5) if(driver.findElements(By.xpath(xpathVAL)).size() != 0)
(6) {
(7) driver.findElement(By.xpath(xpathVAL).click();
(8) Thread.sleep(2000);
(9) }
(10) else{
(11) Thread.sleep(2000);
(12) WebElement present = driver.findElement(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody"));
(13) List<WebElement> list = present.findElements(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody/tr"));
(14) LOGGER.debug("Total Number of TR: " + list.size());
(15) i=0;
(16) }
(17) }
(18) }catch(Exception e){
(19) LOGGER.debug("Exception Caught");
(20) WebElement present = driver.findElement(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody"));
List<WebElement> list = present.findElements(By.xpath("/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[2]/div[2]/div/div[3]/div/table/tbody/tr"));
}
我认为您的要求是一直按住按钮,直到出现某个窗口并且按钮消失。我建议的是,应用&#34; Thread.sleep(//大约3-4秒//)&#34;。然而,许多标准都没有提出编码风格很差并且使用强有力的线程。您可以在其中放置一些其他隐式等待。此外,如果在一段时间后未找到您的元素,您可以在特定时间间隔后应用中断条件,否则它将进入无限循环。如果您在编写代码时遇到问题,请告诉我,我会帮助您。
修改强>
尝试以下几点来删除缓存中不存在的元素: -