【发布时间】:2013-06-23 22:05:16
【问题描述】:
我正在尝试使用 selenium for python 在浏览器中打开一个新选项卡或一个新窗口。打开新标签页或新窗口并不重要,重要的是打开浏览器的第二个实例。
我已经尝试了几种不同的方法,但都没有成功。
-
切换到一个不存在的窗口,希望它能在找不到该窗口时打开一个新窗口:
driver.switch_to_window(None) -
遍历打开的窗口(虽然目前只有一个)
for handle in driver.window_handles: driver.switch_to_window(handle) -
试图模拟键盘按键
from selenium.webdriver.common.keys import Keys driver.send_keys(Keys.CONTROL + 'T')
这个问题尤其是似乎不可能将密钥直接发送到浏览器,只能发送到这样的特定元素:
driver.find_element_by_id('elementID').send_keys(Keys.CONTROL + 'T')
但是,当这样的命令被发送到一个元素时,它似乎什么都不做。我试图找到页面上最顶层的 HTML 元素并将密钥发送到该元素,但再次失败:
driver.find_element_by_id('wrapper').send_keys(Keys.CONTROL + 'T')
我在网上找到了另一个版本,但无法验证其有效性或缺乏,因为我不确定需要导入哪个类/模块
act = ActionChains(driver)
act.key_down(browserKeys.CONTROL)
act.click("").perform()
act.key_up(browserKeys.CONTROL)
非常相似但语法不同的东西(我不确定其中一种或两种语法是否正确)
actions.key_down(Keys.CONTROL)
element.send_keys('t')
actions.key_up(Keys.CONTROL)
【问题讨论】:
-
这仅适用于工作头浏览器、Firefox、Chrome 等。例如 PhantomJS 没有键绑定,您需要使用正确的 javascript 代码调用
execute_script()。如果您需要传递项目/cookie,只需创建一个 target=_blank 链接然后单击它。 -
几乎与Open web in new tab Selenium + Python - Stack Overflow 重复——除了它在新标签页中打开;然而,大多数时候选项卡/窗口都是由 selenium 处理的
标签: python selenium selenium-webdriver window