Ctrl + t -在Selenium + Firefox Python中打开新选项卡不起作用

wi3ka0sx  于 2022-12-27  发布在  Python
关注(0)|答案(3)|浏览(162)

是否有任何功能被Selenium取消?

**目标:**打开新选项卡,如“Ctrl + t”
环境:

  • 窗口7
  • 火狐68
  • Python 3.7语言
    以下两个脚本均无React:
# 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年前显示下面的脚本工作,但不是在我的情况

bjp0bcyl

bjp0bcyl1#

这个问题是新的壁虎司机(提线 puppet ),有两个背景:
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"})
iibxawm4

iibxawm42#

您可以通过以下方式打开新选项卡:

      • 发送键方法**

Mac操作系统
第一个月
其他OS
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()

      • 执行脚本方法**

dr.execute_script("window.open('','_blank');")
或使用特定url
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)

希望这个有用。

kdfy810k

kdfy810k3#

我尝试了所有3种方法。
什么也没发生:无新选项卡。
我信任window.open方法,因为如果我使用_self而不是_blank,它就可以工作。不知何故,Selenium似乎阻止了任何打开新选项卡的方法。

相关问题