Ответ 1
Проще, чем я ожидал. Поскольку SendKeys берет строку, а статические константы в Keys - это все строки, они могут просто быть объединены вместе следующим образом:
textarea.SendKeys(Keys.Shift + Keys.Enter);
Я хотел бы моделировать пользователя, нажимая 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();
, и он отлично работает.
для меня на c # работает только этот вариант:
actions.KeyDown(Keys.Control);
actions.SendKeys("a");
actions.KeyUp(Keys.Control);
В Java у нас есть метод chord
, этот метод будет отправлять последовательность ключей вместе:
textArea.SendKeys( Keys.chord(Keys.Control , "a" ) );
или
textArea.SendKeys( Keys.chord ( Keys.Shift,Keys.Enter ) );