如何使用Selenium将关键和弦发送到文本区域
本文关键字:文本 区域 Selenium 何使用 | 更新日期: 2023-09-27 18:19:44
我想模拟一个用户在文本区域中按下shift回车键。这是我正在使用的代码:
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);
如何模拟按下shift键并同时输入?
比我预期的要简单。由于SendKeys需要一个字符串,而Keys上的静态常量都是字符串,所以它们可以简单地连接在一起,如下所示:
textarea.SendKeys(Keys.Shift + Keys.Enter);
对我来说,在c#上只有这个变体有效:
actions.KeyDown(Keys.Control);
actions.SendKeys("a");
actions.KeyUp(Keys.Control);
如果你可能会反复做一些事情,那么为它做一个扩展方法可能是值得的。我这样做是因为.Clear()
由于某种原因在我们的web应用程序中不起作用。与其总是发送CTRL+A
和'b
,我只是用以下内容扩展了它:
public static class ExtensionMethods
{
public static void Blank(this IWebElement _el)
{
_el.SendKeys(Keys.Control + "a");
_el.SendKeys("'b");
}
}
然后我只需要调用dynEl.Blank();
,它工作得很好。
以下是keys.chord()在JavaScript中的实现方式:https://github.com/SeleniumHQ/selenium/blob/d8ddb4d83972df0f565ef65264bcb733e7a94584/javascript/node/selenium-webdriver/lib/input.js#L135
这已经非常接近公认的最高答案了,我认为唯一的区别是末尾添加了Null字符。您可能会制作一个helper方法来帮助您记住它,但不幸的是,OpenQA.Selenium.Keys
是一个静态类,它的所有属性都返回字符串。因此,如果你想在它周围做一个很好的包装器,你可能也必须包装密钥类。
在Java中,我们有chord
方法,这个方法会一起发送密钥序列:
textArea.SendKeys( Keys.chord(Keys.Control , "a" ) );
或
textArea.SendKeys( Keys.chord ( Keys.Shift,Keys.Enter ) );