如何使用 Python 和 Selenium 发送 ESC 键以关闭弹出窗口?

Posted

技术标签:

【中文标题】如何使用 Python 和 Selenium 发送 ESC 键以关闭弹出窗口?【英文标题】:How to send ESC key to close pop up window using Python and Selenium? 【发布时间】:2017-05-29 17:29:39 【问题描述】:

如前所述,有没有办法发送全局ESC 键来关闭弹出窗口(CSS 模式窗口)?我尝试了以下但没有工作:

driver.find_element_by_tag_name('body').send_keys(Keys.ESCAPE)

我知道我可以使用 xPath 等,但问题是该站点具有动态 elementIds 和类名。

【问题讨论】:

什么样的弹出窗口?警报、窗口还是框架? @ElRuso Modal Div 相关,见Typing Enter/Return key using Python and Selenium? 【参考方案1】:

您不需要向元素发送键,您需要全局按下它们(到浏览器)。

您可以通过操作来完成。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

webdriver.ActionChains(driver).send_keys(Keys.ESCAPE).perform()

您可以在Webdriver API - 7.2 Action Chains doc 中查看更多信息

【讨论】:

我必须添加 ActionChains 的导入才能使其正常工作,并且只使用了 ActionChains(driver).send_keys(Keys.ESCAPE).perform() 而前面没有 webdriver 位。在此处导入信息:***.com/a/26669375/6163621 你需要先导入你要使用的东西——在这个例子中,它是 webdriver 或 ActionChains【参考方案2】:

也试试这个,它会回到你以前的驱动程序

driver.back()

【讨论】:

这是不同的。基于文档driver.back() 在浏览器历史记录中倒退了一步selenium-python.readthedocs.io/…【参考方案3】:

我在 AppRobotic Personal 编辑器中编写我的 Selenium Python 脚本,然后在 Selenium 操作之间插入它的 Windows 宏功能。

import win32com.client
x = win32com.client.Dispatch("AppRobotic.API")
from selenium import webdriver

x.Type("ESCAPE")

【讨论】:

以上是关于如何使用 Python 和 Selenium 发送 ESC 键以关闭弹出窗口?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Selenium 和 Python 在信用卡号字段中输入日期?

如何通过 Selenium WebDriver 和 Python 定位用户名和密码元素

python+selenium+unittest测试框架3-项目构建和发送邮件

python selenium自动发送的整段信息被分割多次迭代重复发送?

使用 selenium 和 python 捕获 AJAX 响应

selenium-python问题日记