Метод SendKeys () игнорирует некоторые символы при отправке в текстовое поле - PullRequest
0 голосов
/ 19 февраля 2019

РЕДАКТИРОВАТЬ: я нашел решение этой проблемы: Решение Ниже

У меня возникла забавная проблема с тех пор, как я переместил установку Selenium Server на другую машину.

Каждый раз, когда я запускаю тесты на этой новой машине, мои тесты входа в систему больше не работают.

После исследования я обнаружил, что поле пароля заполнено невернымзначение (следовательно, тест не пройден).

Я пытаюсь сделать следующее:

_passWordTextBox.Clear();
_passWordTextBox.SendKeys("!!ä{dasd$352310!!!\\_XY>èà$£<?^^");

Вот как поле заполняется после этих строк:

enter image description here

Как вы можете заметить, единственный неправильно отправленный символ - это "!"персонаж.

Он всегда работал на моей другой машине, и несколько других подозрительных кандидатов (например, $ éa <) отправляются правильно. </p>

Я смотрел в сторону культурных различий между компьютерамиработает и сервер выполняет тесты, но я не смог найти что-то убедительное.

Я пробовал следующее:

Строка пароля (как определено вкод):

  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Вот что в итоге записывается в поле:

"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\  _ abcdefghijklmnopqrstuvwxyz{|}

идентифицированный символ, который не работает:

!]^`~

IЯ также пытался использовать другие поля в моем приложении (не подтвержденные passowrd или email), такие как поле Description, и у меня тот же результат: эти несколько символов не выдвигаются.

Я пробовалчтобы увидеть, была ли команда правильно отправлена ​​серверу селена, как она выделяется, это

08:05:35.850 DEBUG [ReverseProxyHandler.execute] - To upstream: {"value":["!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~?"]}

Это означает, что сервер получает команду правильно, но по какой-то причине драйвер или сервер не выполняетсяпрoperly.

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Вы можете попробовать использовать буфер обмена:

public static void SendValueFromClipboard(this IWebElement txtField, string value)
        {
            Clipboard.SetText(value);
            txtField.SendKeys(OpenQA.Selenium.Keys.Control + "v");
        }

Это написано на C #, вам нужно будет переписать его на языке, который вы используете.

0 голосов
/ 21 февраля 2019

Изучив несколько настроек системы, я обнаружил, что как на моей пилотирующей, так и на исполнительной машине добавлены одинаковые региональные настройки (формат: французский (Швейцария), клавиатура: французский (Швейцария) , и я не смотрелПродолжая возиться, я обнаружил эту настройку: Windows Setting for non Unicode programs

Как выяснилось, язык для программ, не поддерживающих Юникод, был установлен на французский (Швейцария) на компьютере, выполняющемтесты. Изменение его на английский (Великобритания) решило проблему.

Возможно, ошибка в chromedriver.

0 голосов
/ 19 февраля 2019

Попробуйте это:

_passWordTextBox.SendKeys(@"!!ä{dasd$352310!!!\\_XY>èà$£<?^^");

Возможно для проверки из поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...