Selenium是否取消了任何功能?
目标: 打开新标签,例如“ Ctrl + t”
环境:
以下两个脚本均无反应:
# 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年前的一些教学视频显示了以下脚本,但在我看来并非如此
答案 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"})