thread.sleep()的替代品-亚马逊硒网络驱动器添加到购物车忽略保险对话框

问题描述 投票:0回答:1

我试图避免使用Thread.sleep(),但没有它,保险对话框上的“不谢谢”按钮将不会被单击

步骤:

  1. 在amazon.com上搜索产品
  2. 点击产品标题
  3. 关于产品详细信息,请单击添加到购物车
  4. 单击“购买保险”对话框上的“不,谢谢”按钮>
  5. 项目已添加到购物车。
  6. 我曾尝试以下方法替换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上搜索产品单击产品标题上的产品详细信息...

java selenium-webdriver webdriverwait
1个回答
0
投票

避免将预声明的WebElement传递给ExpectedConditions函数,因为它应该易于在浏览器上用于WebDriver。如果有条件,请在下面尝试:-

© www.soinside.com 2019 - 2024. All rights reserved.