Как я могу отправить ключевые аккорды в текстовую область с помощью 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);

Как я могу имитировать нажатие на сдвиг и ввести одновременно?

Ответ 1

Проще, чем я ожидал. Поскольку SendKeys берет строку, а статические константы в Keys - это все строки, они могут просто быть объединены вместе следующим образом:

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

Ответ 2

Если есть что-то, что вы могли бы делать снова и снова, возможно, стоит сделать для него метод расширения. Я сделал это, так как .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();, и он отлично работает.

Ответ 3

для меня на c # работает только этот вариант:

actions.KeyDown(Keys.Control);
actions.SendKeys("a");
actions.KeyUp(Keys.Control);

Ответ 4

В Java у нас есть метод chord, этот метод будет отправлять последовательность ключей вместе:

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

или

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