//Thread.sleep(300);
Actions action = new Actions(driver);
WebDriverWait wait3 = new WebDriverWait(driver, 60);
wait3.until(ExpectedConditions.presenceOfElementLocated(By.xpath(".//*[@id='toggleNav']/li[2]/a")));
WebElement we = driver.findElement(By.xpath(".//*[@id='toggleNav']/li[2]/a"));
action.moveToElement(we).perform();
WebDriverWait wait4 = new WebDriverWait(driver, 60);
wait4.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='toggleNav']/li[2]/ul/li[3]/a")));
WebElement we1 = driver.findElement(By.xpath("//*[@id='toggleNav']/li[2]/ul/li[3]/a"));
action.moveToElement(we1).click().build().perform();
使用thread.sleep它可以正常工作,但是在使用时等待它不执行动作,也不会抛出任何未找到的元素异常......
FYI也使用了Java脚本,在这种情况下,当注释thread.sleep时它不起作用
//了Thread.sleep(300);
Actions action = new Actions(driver);
WebElement we = driver.findElement(By.xpath(".//*[@id='toggleNav']/li[2]/a"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", we);
// action.moveToElement(we).perform();
WebElement we1 = driver.findElement(By.xpath("//*[@id='toggleNav']/li[2]/ul/li[3]/a"));
JavascriptExecutor executor1 = (JavascriptExecutor)driver;
executor1.executeScript("arguments[0].click();", we1);
//action.moveToElement(we1).click().build().perform();
答案 0 :(得分:0)
而不是使用
wait.until(ExpectedConditions.presenceOfElementLocated(By....)
使用
wait.until(ExpectedConditions.elementToBeClickable(By....)
这样你就可以在继续之前等待找到的元素可点击。