В основном они практически идентичны. Robot Framework использует SeleniumLibrary , который оборачивает веб-драйвер ключевыми словами «оболочка». Ниже вы можете найти некоторый фрагмент кода, который определяет соответствующий код:
def _input_text_into_text_field(self, locator, text, clear):
element = self.find_element(locator)
if is_truthy(clear):
element.clear()
element.send_keys(text)
def _press_keys(self, locator, parsed_keys):
if is_truthy(locator):
element = self.find_element(locator)
else:
element = None
for parsed_key in parsed_keys:
actions = ActionChains(self.driver)
special_keys = []
for key in parsed_key:
if self._selenium_keys_has_attr(key.original):
special_keys = self._press_keys_special_keys(actions, element, parsed_key,
key, special_keys)
else:
self._press_keys_normal_keys(actions, element, key)
for special_key in special_keys:
self.info('Releasing special key %s.' % special_key.original)
actions.key_up(special_key.converted)
actions.perform()
def _press_keys_normal_keys(self, actions, element, key):
self.info('Sending key%s %s' % (plural_or_not(key.converted), key.converted))
if element:
actions.send_keys_to_element(element, key.converted)
else:
actions.send_keys(key.converted)
def _press_keys_special_keys(self, actions, element, parsed_key, key, special_keys):
if len(parsed_key) == 1 and element:
self.info('Pressing special key %s to element.' % key.original)
actions.send_keys_to_element(element, key.converted)
elif len(parsed_key) == 1 and not element:
self.info('Pressing special key %s to browser.' % key.original)
actions.send_keys(key.converted)
else:
self.info('Pressing special key %s down.' % key.original)
actions.key_down(key.converted)
special_keys.append(key)
return special_keys
Другими словами, когда вы вызываете Input Text
, он сначала пытается очистить поле (в отличие от вызова Press Keys
). Но с Input Text
вы не сможете генерировать некоторые нажатия клавиш, такие как «Вверх, вниз» и т. Д.
Нажмите клавиши, возможность отправки некоторых «специальных» клавиш может генерировать события для элементов, которые не могутбыть сгенерировано Input Text
. Такие события могут обрабатываться особым образом на тестируемой странице, поэтому последний метод гипотетически может расширить охват ваших тестов (в зависимости от того, действительно ли эти события обрабатываются каким-либо особым образом в вашем приложении).