如何使用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 ) );