如何在 Selenium WebDriver 中处理弹出窗口

How to Handle Popup in Selenium WebDriver

我尝试了从警报到多个 window 处理程序的所有方法,但无法摆脱我们在初始阶段加载到网站下方时出现的弹出窗口。

https://www.build.com/

你能帮我解决这个问题吗?URL 并处理弹出窗口,想立即关闭它。

谢谢 安琪

您所指的弹出窗口不完全是 "Pop Up" window。它只是在同一页面中加载的一个元素。所以,等到该元素出现在页面中,然后单击关闭按钮。

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

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

要等待任何特定元素,请选中此 answer

所需元素在 Modal Dialog Box so to locate/click on the element you have to induce WebDriverWait for the element_to_be_clickable() and you can use either of the following :

解决方案

您需要引入 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