【发布时间】:2021-12-03 16:40:47
【问题描述】:
我了解了使用隐式/显式等待的好处,并决定在我的代码中放弃 Thread.sleep()。然而,结果却适得其反。使用 Thread.sleep(),我实际上可以定位元素,而隐式/显式等待会导致同一元素出现 ElementClickInterceptedException: element click intercepted: [duplicate] 错误。
我试图模拟点击的元素是位于对话框中的“我同意”按钮。以下是我尝试单击的按钮的 DOM。
下面是模拟点击的代码。
使用隐式等待
driver.manage().timeouts().implicitlyWait(120, TimeUnit.SECONDS);
driver.findElement(By.xpath("/html/body/div[1]/div/div/div[4]/a")).click();
结果: ElementClickInterceptedException:元素点击被拦截:[重复]错误
使用显式等待
WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement I_Agree;
I_Agree = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div/div/div[4]/a")));
I_Agree.click();
结果: ElementClickInterceptedException:元素点击被拦截:[重复]错误
使用 Thread.sleep()
Thread.sleep(20000);
driver.findElement(By.xpath("/html/body/div[1]/div/div/div[4]/a")).click();
结果:找到元素,可以执行点击。
希望对我可能犯的任何错误提出建议。
【问题讨论】: