python - 关闭 Selenium 中的通用弹出窗口

标签 python selenium selenium-webdriver webdriver popupwindow

在使用 selenium webdriver 抓取页面时,会出现一个“弹出窗口”。

打开页面时,http://www.fanatics.com/search/red%20shoes - 我看到一个带有 xpath '//*[@id="mm_DesktopInterstitialImage"]' 的弹出窗口 - 但我不想使用 xpath 关闭此警报,并且有一些通用的东西可以关闭/关闭警报。 到目前为止,这是我尝试过的 - :

from selenium import webdriver
import os
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

chromedriver = "/usr/local/CHROMEDRIVER"
desired_capabilities=DesiredCapabilities.CHROME
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver,desired_capabilities=desired_capabilities)
url='http://www.fanatics.com/search/red%20shoes'
driver.get(url)
#driver.set_page_load_timeout(300)
driver.implicitly_wait(60)
alert = driver.switch_to_alert()
alert.dismiss
handle=driver.window_handles
print handle
#[u'CDwindow-B1E9C127-719D-ACAA-19DE-1A6FA265A4FF']

据我从相关示例中了解到,人们通常会切换窗口句柄,但我的句柄只有一个元素。即 driver.switch_to_window(driver.window_handles[1]) 然后是 driver .close() 最后再次切换,使用 driver.switch_to_window(driver.window_handles[1]) 我还使用了隐式等待,因为我不确定警报窗口是否正在完全阅读 - 但这也不起作用。如果可能的话,我不想对 xpath 进行硬编码。

我做错了什么?

相关,但对我不起作用:Selenium python how to close a pop up window?

最佳答案

如我所见,它不是一个警告框!!。它只是一个简单的弹出窗口,在您进入页面时出现,并且出现在主窗口本身中(也不需要切换和关闭它)。使用以下代码关闭它。

driver.find_element_by_xpath('//div[contains(@class,"ui-dialog") and @aria-describedby="dialogContent2"]//button[@title="Close"]').click()

关于python - 关闭 Selenium 中的通用弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27270357/

相关文章:

python - raw_input 在请求输入后打印提示

python - 当工作目录位于 UNC 路径而非映射驱动器上时调用 subprocess.Popen()

selenium - 机器人框架 - Selenium2Library - IE11 非常不稳定,无法完成测试

java - 执行 Angular ng-if 条件后,Selenium DOM 没有改变

java - 如何为selenium java代码添加循环条件

python - ipython中的play()函数未定义

java - Selenium Java - 新的 Actions(driver)).sendKeys(...) 行为

c# - 显式等待在 selenium webdriver 2.37 中不起作用?

java - 如何使用 java(selenium 网络驱动程序)从下拉列表中选择值

python - 是否可以在Python中使用Combobox更改FigureCanvas?