Автоматизация заполнения форм: Почему send_keys автоматически заполняет более одного поля? - PullRequest
1 голос
/ 27 апреля 2020

Я пишу следующее, используя Python и Selenium в Windows, с целью заполнения двух полей с текущей датой и указанным временем для каждого поля:

#Defines and inputs date and time into End Time field 
x = datetime.datetime.now()
endtime = x.strftime("%m/%d/%Y" " 8:30 AM")
endtime_field = driver.find_element_by_xpath('//*[@id="MainContent_endDt"]')
endtime_field.send_keys([endtime])

#Defines and inputs date and time into Start Time field 
starttime = x.strftime("%m/%d/%Y" " 8:28 AM")
starttime_field = driver.find_element_by_xpath('//*[@id="MainContent_startDt"]')
starttime_field.send_keys([starttime])

Когда Я запускаю файл в Chromebrowser, endtime_field заполняется правильно, но starttime_field автоматически заполняется записями как конечного, так и начального времени, без пробела, ie:

04/27/2020 8:30 AM04 / 27/2020 8:28 AM

Кажется, что endtime_field.send_keys автоматически запускается во втором поле, даже если у него другой XPath. Я отмечаю, что после AM от endtime и до 04 от starttime нет пробела.

Я пытался перейти с endtime_field на starttime_field, используя Keys.TAB, а также выполняя starttime_field.clear() перед заполнением, но они оба не работают.

Вот как выглядит элемент starttime_field с помощью браузера. Inspect:

<input name="ctl00$MainContent$startDt" type="text" id="MainContent_startDt" class="form-control">

Любая помощь будет принята с благодарностью.

1 Ответ

3 голосов
/ 27 апреля 2020

send_keys метод работает аналогично ручному вводу и не учитывает текущий фокус или контекст выбора. В вашем случае кажется, что фокус переходит на другой элемент управления, прежде чем очищать / записывать все символы в одном элементе управления.

Из python документы селен:

send_keys(*keys_to_send)
Sends keys to current focused element.
Args:   
keys_to_send: The keys to send. Modifier keys constants can be found in the ‘Keys’ class.

send_keys_to_element(element, *keys_to_send)
Sends keys to an element.
Args:   
element: The element to send keys.
keys_to_send: The keys to send. Modifier keys constants can be found in the ‘Keys’ class.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...