Как обрабатывать всплывающие окна в Selenium WebDriver - PullRequest
2 голосов
/ 27 февраля 2020

Я перепробовал все, от оповещений до нескольких обработчиков окон, но не смог избавиться от всплывающего окна, когда мы загружаемся ниже сайта на начальной стадии.

https://www.build.com/

Не могли бы вы помочь мне в этом, чтобы просто перейти по указанному выше URL-адресу и обработать всплывающее окно, хотите сразу его закрыть.

Спасибо, Ankit

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Требуемый элемент находится в Модальном диалоговом окне , поэтому, чтобы найти / щелкнуть элемент, вы должны вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать любой из следующих Стратегии локатора :

Решение

Вам нужно заставить WebDriverWait , чтобы желаемый элемент был активным для нажатия , и вы можете использовать одно из следующих решений:

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.close.js-modal-close. > span.close-icon"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='close js-modal-close ']/span[@class='close-icon']"))).click()
    
  • Примечание : необходимо добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
1 голос
/ 27 февраля 2020

Всплывающее окно, на которое вы ссылаетесь, не является всплывающим окном. Это просто загрузка элемента на той же странице. Итак, подождите, пока этот элемент появится на странице, и нажмите кнопку закрытия.

# in Java
driver.findElement(By.xpath("//*[@class='close-icon']")).click();

# or in JavaScript
document.querySelector('.close-icon').click();

Чтобы дождаться какого-либо конкретного элемента, отметьте этот ответ

...