请问Python+selenium怎么验证浏览器关闭弹窗?

想验证编辑表单时点击关闭tab页后Chrome弹出的"是否关闭"弹窗,但是尝试了driver.close()后直接tab页关闭了,没有触发弹窗,手动点击就会有弹窗,还尝试过action的组合键(command+w),但是没有反应,tab页也没有关闭,请问该如何触发这个关闭弹窗?

一般来说关闭了,对应的弹窗的div就是display:none样式或者div被从网页dom删除了,你对此进行判断即可。

本回答自动生成,以下引用ChatGPT官方回答:

在自动化测试中,有些弹出窗口(例如浏览器的弹窗)可能会比较难以处理。对于Chrome浏览器的关闭弹窗,可以尝试使用driver.quit()方法来关闭整个浏览器进程,而不是单独关闭一个tab页。

另外,Chrome浏览器的关闭弹窗通常是由浏览器本身来处理的,而不是由WebDriver来控制。因此,WebDriver对于这种弹窗的处理能力有限。如果要处理这种弹窗,可以考虑使用第三方工具,比如pyautogui来模拟鼠标点击事件,以实现点击关闭按钮触发弹窗的效果。

以下是一个示例代码,使用pyautogui来模拟鼠标点击关闭按钮:

import pyautogui
import time

# 等待一段时间,确保页面加载完成
time.sleep(5)

# 获取关闭按钮的坐标,需要根据具体页面的关闭按钮进行调整
# 可以使用pyautogui的screenshot函数截取屏幕并查找关闭按钮的位置
close_button_x, close_button_y = (100, 100)

# 移动鼠标到关闭按钮位置并点击
pyautogui.moveTo(close_button_x, close_button_y)
pyautogui.click()

请注意,这种方法是模拟鼠标点击关闭按钮,可能会受到页面布局的影响,需要根据具体情况进行调整。另外,这种方法可能不是特别稳定,因为弹窗的位置和关闭按钮的样式可能会随着页面的变化而变化。如果可以的话,建议尽量使用WebDriver的方法来操作页面,避免使用模拟鼠标点击的方法。

【相关推荐】



  • 这篇博客: python + selenium + chrome 如何操作滚动条中的 3.3. 发送tab键,移动到目标元素 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 可以发送tab键来切换页面按钮,达到下拉滚动条的目的。但是一定要注意的是,指定的元素一定要能被TAB键选中,像输入框,超链接,Button等
    
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import Select
    
    import time
    import random
    
    # 加载xpath插件
    chrome_options = webdriver.ChromeOptions()
    extension_path = 'D:/extension/XPath-Helper_v2.0.2.crx'
    chrome_options.add_extension(extension_path)
    
    browser = webdriver.Chrome(chrome_options=chrome_options)
    browser.maximize_window()
    wait = WebDriverWait(browser, 25)
    waitPopWindow = WebDriverWait(browser, 25)
    
    browser.get("https://www.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=phone")
    
    time.sleep(random.randrange(5, 10, 1))
    
    # 找到 Next Page 按钮, 属于可见元素
    
    # 指定元素是 超链接 ———— 可以用Tab键切换到
    targetElem = browser.find_element_by_xpath("//a[@id='pagnNextLink']")
    
    # 这个元素不是超链接,所以无法接收Tab键
    # targetElem = browser.find_element_by_xpath("//a[@id='pagnNextLink']/span[@id='pagnNextString']")
    
    targetElem.send_keys(Keys.TAB)
    
    print(f"结束拖动滚动条....")
    time.sleep(random.randrange(5, 10, 1))
    browser.quit()
    
    

    这里写图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^