使用 ActionChains 在 Selenium Webdriver 中按 ctrl+t 不起作用

Cri*_*Jam 5 python selenium selenium-chromedriver selenium-webdriver

我需要在测试中打开一个新的浏览器选项卡,并且我读到最好的方法是将适当的密钥发送到浏览器。我使用的是 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()
Run Code Online (Sandbox Code Playgroud)

这确实将我在剪贴板中复制的所有内容传递到默认焦点的 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()
Run Code Online (Sandbox Code Playgroud)

浏览器似乎没有发生任何事情,没有打开新选项卡,没有对话框,没有通知。有人知道为什么吗?

Kun*_*duK 4

尝试一下这个 java 脚本执行器,它应该可以工作。

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

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")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述