繁体   English   中英

Selenium ChromeDriver C# - 如何发送快捷浏览器

[英]Selenium ChromeDriver C# - How to send a shortcut browser

如何使用Selenium发送Chrome快捷方式? 我的意思是像Ctrl + SCtrl + TCtrl + P这样的快捷键,与WebElements无关。 我在那里读了很多类似的问题,但没有一个建议的解决方案适合我。

假设我想在浏览器上打开一个新选项卡( Ctrl + T ),我尝试了以下所有代码但没有成功:

  1. “标准”方式:

     IWebElement body = myDriver.FindElement(By.TagName("body")); body.SendKeys(Keys.Control + "t"); 
  2. 行动方式:

     Actions action = new Actions(myDriver); action.SendKeys(Keys.Control + "t").Build().Perform(); 
  3. ChromeDriver方式1:

     if(myDriver is ChromeDriver) { ChromeDriver chromeDriver = myDriver as ChromeDriver; chromeDriver.Keyboard.SendKeys(Keys.Control + "t"); } 
  4. ChromeDriver方式2:

     ChromeDriver chromeDriver = myDriver as ChromeDriver; chromeDriver.Keyboard.PressKey(Keys.Control); chromeDriver.Keyboard.PressKey("t"); chromeDriver.Keyboard.ReleaseKey(Keys.Control); chromeDriver.Keyboard.ReleaseKey("t"); 

请注意,我提到的第一种方式适用于其他WebDriver而不是Chrome。 我用 :

  • 硒3.0.1
  • ChromeDriver 2.27.440174

我的驱动程序的初始化是非常基本的:

ChromeOptions options = new ChromeOptions();
this.myDriver = new ChromeDriver(/* my path */, options);

有任何想法吗?

不幸的是, 此问题目前阻止了Chrome对selenium发送的Ctrl + T等快捷方式做出反应。

它似乎是Chromium 问题 您不能将键组合与chromedriver一起chromedriver ,但您仍然可以使用JavaScript作为替代:

IJavaScriptExecutor js = myDriver as IJavaScriptExecutor;
js.ExecuteScript("window.open()"); // Open new browser tab like `CTRL + t` do

我正在使用与Actions的组合键。 我多年来一直在使用这个代码示例,它适用于Chrome,Firefox和IE。

public void SelectAll()
{
    (new Actions(yourDriverInstance)).SendKeys(Keys.Control).SendKeys("a").Perform();            
}

我错过了什么吗???

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM