关闭 Selenium 中的通用弹出窗口

新手上路,请多包涵

使用 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']

根据我从相关示例中了解到的情况,人们通常会切换窗口句柄,但我的句柄只有一个 element.ie, 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?

原文由 ekta 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

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

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

原文由 Subh 发布,翻译遵循 CC BY-SA 3.0 许可协议

效果很好,试试看 ;)

 from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--disable-notifications")
browser = webdriver.Chrome('C:\Python34\Lib\site-packages\selenium\webdriver\chromedriver.exe', chrome_options=options)

原文由 Vedanta6 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题