我试图避免使用Thread.sleep(),但没有它,保险对话框上的“不谢谢”按钮将不会被单击
步骤:
我曾尝试以下方法替换thread.sleep();
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS); driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS); wait.until(ExpectedConditions.elementToBeClickable(By.id("add-to-cart-button"))).click(); try { Thread.sleep(2000); if (insurancePopUpDialog.isDisplayed()) { wait.until(ExpectedConditions.elementToBeClickable(insuranceNoThanksButton)); new Actions(driver).moveToElement(insuranceNoThanksButton).click().build().perform(); wait.until(ExpectedConditions.or( ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"huc-v2-order-row-items-msg\"]")), ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"huc-v2-order-row-confirm-text\"]")), ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"attachDisplayAddBaseAlert\"]/div/h4")) )); } } catch (Exception e) { e.printStackTrace(); }
尝试隐式等待
我试图避免使用Thread.sleep(),但没有它,保险对话框上的No Thank按钮不会被单击步骤:在amazon.com上搜索产品单击产品标题上的产品详细信息...
避免将预声明的WebElement传递给ExpectedConditions函数,因为它应该易于在浏览器上用于WebDriver。如果有条件,请在下面尝试:-