Альтернатива thread.sleep () - веб-драйвер amazon selenium добавить в корзину игнорировать диалог страхования - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь избежать использования 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();
                }   

Пробное неявное ожидание

1 Ответ

0 голосов
/ 30 сентября 2019

Избегайте передачи предварительно объявленного WebElement в функцию ExpectedConditions, поскольку она должна быть легко доступна для WebDriver в браузере. Попробуйте ниже внутри, если условие: -

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

Позже вы можете объявить WebElement insuranceNoThanksButton для дальнейших операций.

Если выше не работает, попробуйте щелкнуть по JavaScript: -

((JavascriptExecutor)driver).executeScript("arguments[0].click();", insuranceNoThanksButton);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...