Ctrl + T-在Selenium + Firefox Python中无法打开新标签页

时间:2019-08-05 09:29:07

标签: python-3.x firefox selenium-webdriver

Selenium是否取消了任何功能?

目标: 打开新标签,例如“ Ctrl + t”

环境:

  • Window 7
  • Firefox 68
  • Python 3.7

以下两个脚本均无反应:

# 1 
dr.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
# 2 
ActionChains(dr).key_down(Keys.CONTROL).send_keys('t').key_up(Keys.CONTROL).perform()

3到4年前的一些教学视频显示了以下脚本,但在我看来并非如此

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式打开新标签:

  • SendKey方法

    Mac OS

    dr.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't')

    其他操作系统

    dr.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')

  • 操作方法

    ActionChains(dr).key_down(Keys.CONTROL).send_keys('t').key_up(Keys.CONTROL).perform()

  • ExecuteScript方法

    dr.execute_script("window.open('','_blank');")

    或使用特定的网址

    dr.execute_script("window.open('URL');")

-更新-

如果您的问题是要切换到特定标签,请执行以下操作:

在执行操作之前,请使用:

first_tab = dr.window_handles[0]

然后执行将带到新标签页的操作。可以.click采取行动。

添加一些睡眠以等待加载新标签页dr.implicitly_wait(....)

使用:处理新标签页:

second_tab = dr.window_handles[1]

现在您可以切换至所需标签了:

dr.switch_to.window(first_tab / second_tab)

希望这会有所帮助。

答案 1 :(得分:2)

问题是新的壁虎驱动程序(木偶),具有两个上下文:

1)Chrome(浏览器本身)

2)内容(网页内容)

您需要告诉Selenium您要在哪个上下文中发送操作。

对于我来说(Python 3.6,Selenium 3.141,gecko驱动程序0.26.0,firefox 75),此代码有效:

driver.execute("SET_CONTEXT", {"context": "chrome"})
    urlbar=driver.find_element('id','urlbar')
    urlbar.send_keys(Keys.CONTROL, "t")
driver.execute("SET_CONTEXT", {"context": "content"})