Selenium TypeKeys удаляет точку из вводимой строки
Вопрос
Следующая инструкция
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);
Это работает как заклинание!