如何使用Selenium将关键和弦发送到文本区域?

我想模拟用户在文本区域按shift-enter。 这是我正在使用的代码:

var driver = new FirefoxDriver(); driver.Navigate().GoToUrl("http://pagewithtextarea"); var textarea = driver.FindElement(By.Id("myTextArea")); //Send text textarea.SendKeys("hello world!"); 

如果我想模拟按下回车按钮,我可以说

 textarea.SendKeys(Keys.Enter); 

我怎样才能模拟按下换档并同时进入?

比我想象的简单。 由于SendKeys接受一个字符串,并且Keys上的静态常量都是字符串,因此它们可以简单地连接在一起,如下所示:

 textarea.SendKeys(Keys.Shift + Keys.Enter); 

如果你可能会反复做一些事情,那么为它做一个扩展方法可能是值得的。 我这样做是因为.Clear()由于某种原因在我们的网络应用程序中不起作用。 而不是总是发送CTRL+A\b ,我只是用它扩展它:

 public static class ExtensionMethods { public static void Blank(this IWebElement _el) { _el.SendKeys(Keys.Control + "a"); _el.SendKeys("\b"); } } 

然后我只是调用dynEl.Blank(); 而且效果很好。

在Java中,我们有chord方法,这个方法会将键序列发送到一起:

 textArea.SendKeys( Keys.chord(Keys.Control , "a" ) ); 

要么

 textArea.SendKeys( Keys.chord ( Keys.Shift,Keys.Enter ) );