【问题标题】:Python Selenium closing a pop-up windowPython Selenium 关闭弹出窗口
【发布时间】:2018-08-11 12:24:13
【问题描述】:

我想通过使用 Selenium 和 Python 来关闭在 Amazon 网站上打开的这个窗口。我试过find_element_by_xpath,但它不起作用。这是代码的sn-p;

close_to_list = browser.get("/html/body/div[4]/div/div/div[2]/div[2]/div[2]/div[1]/div[2]/div/div/table/tbody/tr[2]")

我得到了那个'X'按钮的xpath,但我想我需要将它关闭为switch_to_alert,但我是这个时代的新手,所以我无法正确编写它。

这是图像视图; enter image description here

【问题讨论】:

  • 请附上相关的 HTML 并描述您的代码的结果。您是否在driver.find_element_by_xpath('xpath').click() 中添加了.click()
  • broswer.get() 用于导航到 URL。您可能想要locate elements 的一种方法。

标签: python selenium


【解决方案1】:

您不需要使用switch_to_alert()get() 来关闭模态窗口。只需尝试使用以下代码关闭它:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button[aria-label="Close"]'))).click()

这允许您等待按钮出现并单击按钮

【讨论】:

  • 按钮已经可以点击了。它是亚马逊上的“添加到列表”按钮。也许这会让你更清楚地想象这个场景。您的答案似乎有效,但我意识到它并没有关闭弹出窗口,而是关闭了整个自动浏览器,所以我取消了正确答案按钮。
  • 关闭整个自动浏览器...你确定吗?我的代码应该点击模式上的X 按钮...您需要处理该按钮还是“添加到列表按钮”?
  • 我成功按下了“添加到列表”按钮,在新的弹出窗口打开后,我需要通过已经看到的“X”按钮将其关闭
  • 已经看到的“X”按钮...已经为您或 WebDriver 看到了? :) 您是否尝试过我的代码?单击“添加到列表”按钮后,您应该添加WebDriverWait...
  • @SelinElibol ,所以?可以分享一下你现在的状态吗?