如何使用Selenium发送Chrome快捷方式? 我的意思是快捷方式,如 Ctrl + S , Ctrl + T 或 Ctrl + < kbd> P 与WebElements无关。我在那里读了很多类似的问题,但没有一个建议的解决方案适合我。
我想说我想在浏览器上打开一个新标签( Ctrl + T ),我尝试了以下所有代码但没有成功:
&#34;标准&#34;方式:
myElement.style.height = heightscr + "px";
行动方式:
IWebElement body = myDriver.FindElement(By.TagName("body"));
body.SendKeys(Keys.Control + "t");
ChromeDriver方式1:
Actions action = new Actions(myDriver);
action.SendKeys(Keys.Control + "t").Build().Perform();
ChromeDriver方式2:
if(myDriver is ChromeDriver)
{
ChromeDriver chromeDriver = myDriver as ChromeDriver;
chromeDriver.Keyboard.SendKeys(Keys.Control + "t");
}
请注意,我提到的第一种方式适用于其他WebDriver而不是Chrome。 我用:
我的驱动程序的初始化非常基础:
ChromeDriver chromeDriver = myDriver as ChromeDriver;
chromeDriver.Keyboard.PressKey(Keys.Control);
chromeDriver.Keyboard.PressKey("t");
chromeDriver.Keyboard.ReleaseKey(Keys.Control);
chromeDriver.Keyboard.ReleaseKey("t");
有什么想法吗?
答案 0 :(得分:1)
不幸的是this issue目前会阻止Chrome对由selenium发送的 Ctrl + T 等快捷方式做出反应。
答案 1 :(得分:1)
似乎是Chromium
issue。您不能将关键字组合与chromedriver
一起使用,但您仍然可以使用JavaScript
替代:
IJavaScriptExecutor js = myDriver as IJavaScriptExecutor;
js.ExecuteScript("window.open()"); // Open new browser tab like `CTRL + t` do
答案 2 :(得分:0)
我正在使用与Actions的组合键。我多年来一直在使用这个代码示例,它适用于Chrome,Firefox和IE。
public void SelectAll()
{
(new Actions(yourDriverInstance)).SendKeys(Keys.Control).SendKeys("a").Perform();
}
我错过了什么吗?