gpt4 book ai didi

java - thread.sleep() 的替代方案 - 亚马逊 selenium webdriver 添加到购物车忽略保险对话框

转载 作者:行者123 更新时间:2023-12-02 00:04:59 24 4
gpt4 key购买 nike

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

步骤:

  1. 在 amazon.com 上搜索产品
  2. 点击产品标题
  3. 在产品详细信息上点击“添加到购物车”
  4. 点击“购买保险”对话框中的“不,谢谢”按钮
  5. 商品已添加到购物车。

我尝试用以下方法来替换 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();
}

尝试隐式等待

最佳答案

避免将预先声明的 WebElement 传递给 ExpectedConditions 函数,因为浏览器上的 WebDriver 应该可以轻松使用它。在 if 条件下尝试以下内容:-

wait.until(ExpectedConditions.elementToBeClickable(By.xpath(<xpath for weblement insuranceNoThanksButton >)));

稍后,您可以声明WebElement InsuranceNoThanksButton以进行进一步的操作。

如果上述方法不起作用,请尝试使用 javascript click:-

((JavascriptExecutor)driver).executeScript("arguments[0].click();", insuranceNoThanksButton);

关于java - thread.sleep() 的替代方案 - 亚马逊 selenium webdriver 添加到购物车忽略保险对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58160978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com