Вопрос

Следующая инструкция

Selenium.typeKeys("location", "gmail.com");

вводит строку gmailcom вместо того, чтобы gmail.com.

Что там происходит?

Из комментариев:
Я пытаюсь имитировать автозаполнение, и единственный способ сделать это в настоящее время на selenium - это объединить type и TypeKeys.например:

selenium.type("assigned_to", split[0]+"@");
selenium.typeKeys("assigned_to", "gmail.com");

Теперь мой вопрос в том, почему TypeKeys не вводит "точку" между ними gmail.com?

Это было полезно?

Решение

Вы пробовали использовать собственные ключевые функции и коды символов javascript?Я не смог заставить символ 'точки' работать, используя их (char 190), но я добился, чтобы десятичный символ (char 110) работал просто отлично, и с текстовым полем тоже не должно быть проблем.

selenium.Focus("assigned_to");
selenium.Type("assigned_to", split[0]+"@");
selenium.TypeKeys("assigned_to", "gmail");
selenium.KeyPressNative("110");
selenium.TypeKeys("assigned_to", "com");

Другие советы

Используйте type способ.

Из самого javadoc для ключей типов:

эта команда может иметь, а может и не иметь никакого видимого эффекта, даже в тех случаях, когда набор клавиш обычно имеет видимый эффект

...

В некоторых случаях вам может потребоваться использовать простую команду "type" для установки значения поля, а затем команду "TypeKeys" для отправки событий нажатия клавиш, соответствующих тому, что вы только что напечатали.

У нас были похожие проблемы с использованием typekeys в selenium python.

Мы решили, что одним из способов решения этой проблемы является использование комбинации 'type' и 'type_keys'.Как вам, возможно, известно, у type таких проблем нет.

Мы сделали это в нашем скрипте selenium python, и он работает просто отлично.

Например:Если в текстовом поле необходимо ввести адрес электронной почты:test.me@test.me.uk

Тогда делай

type(locator,’test.me@test.me.’)
type_keys(locator,’uk’)

Может быть, это был очень грубый способ сделать это, но он сделал свое дело.

Надеюсь, это поможет кому-то еще с подобной проблемой.

Также попробуйте установить фокус на элементе, прежде чем писать на нем.

selenium.focus(locator);
selenium.typeKeys(locator, value);

в моем случае это сработало, обработав тип ввода = пароль.

Предположим, что строка должна быть введена с помощью typeKeys это "abc.xyz.efg".Тогда мы можем использовать type и typeKeys команды для записи заданной строки.

type(locator,"abc.xyz.")
typeKeys(locator,"efg")

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

Я также наблюдаю такое поведение при использовании Selenium RC (C #) и с разными символами (например, 'y', который также, кажется, удаляет символ, следующий за ним, из действия ввода ..)

В некоторых ситуациях проблему вполне возможно обойти, введя клавиши с помощью клавиш ввода или функций нажатия клавиш, но мне не удалось найти решение, которое работает, когда вы хотите ввести текст в поле, ввести управляющие символы (например, [Enter] или перевод строки), а затем ввести больше текста..(использование функции 'Type' в этом случае просто перезаписывает содержимое поля ...).

Если кому-нибудь удастся найти разумное решение этой проблемы, пожалуйста, добавьте его в этот вопрос, поскольку оно начинает появляться в Google now и, вероятно, поможет многим людям..(Я бы назначил награду, если бы мог ..)

Это открытая ошибка в Selenium (баг SEL-519).

После некоторой возни с ним мне, наконец, удалось ввести '.' в текстовое поле с помощью JavaScript.Выполните что-то вроде window.document.getElementById('assigned_to').value += '.' через storeEval или что-то подобное.

Я получил такое же поведение, но исправил его, передав переменную в команду Type вместо строки.

string email = @"name@gmail.com";
selenium.Type(inputfield, email);

Это работает как заклинание!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top