2016-08-18 6 views
1

Я написал следующее.Проблема с селеном, Python

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
bot = webdriver.Firefox() 
bot.find_element_by_name("username").send_keys(config['username']) 

Когда я использую send_keys и случается, печатая в тот же момент, то, что я напечатал также добавляется в имя пользователя.
Как этого избежать?

Пример:

Я хочу, чтобы заполнить имя с «Sandeep» Если в тот же момент я нажимаю «а», то имя пользователя становится «sandeepa» или чего-то подобного.

+3

Я сомневаюсь, что для этого будет простое решение. Нужно ли вводить код при запуске этого скрипта? – DeepSpace

+0

Это скорее похоже на ограничение OS/Browser и Selenium, чем на актуальную проблему. Как добавлено DeepSpace, вы можете вводить _need_ одновременно с запуском теста? – Dillanm

+0

Я использовал его для загрузки и синхронизации некоторых файлов, чтобы он работал на задней панели, и я использую задание cron для его запуска, поэтому простое решение не используется. – Sandeep

ответ

1

Вы можете использовать метод executeScript:

webdriver.execute_script("document.getElementById('username').setAttribute('value', 'Sandeep')") 

JavaScript будет делать вставку текста в одной операции.

0

Я вижу 2 вариант:

  1. Создать скрытый вход отправить ключи к нему, чем выполнить копирование/вставку из скрытых видимого входа, после удаления скрытого ввода.

  2. Скрыть ввод, а не send_keys и после его отображения.

Полезные ссылки:

Performing a copy and paste with Selenium 2

WebDriver: add new element

Смежные вопросы