在使用ActionChains的Selenium Webdriver中按ctrl + t无效

时间:2019-03-14 11:21:19

标签: python selenium selenium-webdriver selenium-chromedriver

我需要在测试中打开一个新的浏览器选项卡,并且我已经阅读到最好的方法是简单地将适当的密钥发送到浏览器。我正在使用Windows,所以我使用ActionChains(driver).send_keys(Keys.CONTROL, "t").perform(),但是,此操作无济于事。

我尝试了以下方法来测试Keys.CONTROL是否正常工作:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
def test_trial():
    driver = webdriver.Chrome()
    driver.get("https://www.google.com/")
    ActionChains(driver).send_keys(Keys.CONTROL, "v").perform()

这确实会将我在剪贴板中复制的内容传递到默认情况下处于焦点的Google搜索框。

这是我要使用的,但是不起作用:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
def test_trial():
    driver = webdriver.Chrome()
    driver.get("https://www.google.com/")
    ActionChains(driver).send_keys(Keys.CONTROL, "t").perform()

浏览器似乎什么也没发生,没有打开新标签页,没有对话框,没有通知。有人知道为什么吗?

3 个答案:

答案 0 :(得分:1)

请尝试使用此Java脚本执行器。

link="https://www.google.com"
driver.execute_script("window.open('{}');".format(link))

Edited代码和窗口句柄。

driver=webdriver.Chrome()
driver.get("https://www.google.com")
window_before = driver.window_handles[0]

link="https://www.google.com"
driver.execute_script("window.open('{}');".format(link))
window_after = driver.window_handles[1]
driver.switch_to.window(window_after)

driver.find_element_by_name("q").send_keys("test")

enter image description here

答案 1 :(得分:0)

尝试执行此脚本:

driver.execute_script("window.open('https://www.google.com');")

例如

myURL = 'https://www.google.com'
driver.execute_script("window.open('" + myURL + "');")

答案 2 :(得分:0)

利用JavaScript执行,您已经获得了一些很好的答案,但是我很好奇为什么您的示例最初不起作用。

您的ActionChains行可能在页面完全加载之前执行;您可以尝试添加一个等待,如下所示:

Save