транспортир action.keydown против селена actions.keydown - PullRequest
0 голосов
/ 01 ноября 2018

транспортир: 5.4.1 Селен: 3,14 Geckodriver: 0,23 браузер: firefox

Привет, я получаю ошибку «Failed: sendKeysToActiveElement» при выполнении следующего кода

browser.actions (). KeyDown (protractor.Key.CONTROL) .click (elements) .keyUp (protractor.Key.CONTROL) .perform ()

Однако, если я пытаюсь запустить его с селеном вместо транспортира, он работает со следующим кодом

.

driver.actions ({мост: истинный}) KeyDown (webdriver.Key.CONTROL) .click (элементы) .keyUp (webdriver.Key.CONTROL) .Выполните ();

Кто-нибудь сталкивался с этим раньше?

1 Ответ

0 голосов
/ 01 ноября 2018

Разница во фрагментах кода Protractor и Selenium JS заключается в том, что форма не выполняет действия в режиме моста , тогда как последний выполняет.

Из источника селена в версии 3.14 ,

 * In bridge mode, {@link #perform perform()} will first attempt to execute the
 * configured action sequence using the W3C action protocol. If this is rejected
 * by the remote end, the sequence will be translated to and executed against
 * the legacy protocol.

Похоже, что веб-драйвер Gecko может не поддерживать протокол действий W3C , а ошибки в действиях выбросили .

  if (this.bridge_
      && (ex instanceof UnknownCommandError
          || ex instanceof UnsupportedOperationError)) {
    return executeLegacy(this.executor_, this.sequences_);
  }
  throw ex;

Попробуйте выполнить свои действия в режиме моста для тестов транспортира.

actions = browser.actions({bridge: true})
actions.keyDown(protractor.Key.CONTROL)
  .click(elements)
  .keyUp(protractor.Key.CONTROL)
  .perform()
...