Следующая команда завершилась неудачно в браузере Safari во время тестирования автоматизации:
ActionChains(driver).move_to_element(searchInput).perform()
Исключение:
InvalidArgumentException: Сообщение: источник ввода с обнаруженным ключом с недопустимым значением «value» в полезной нагрузке: {actions = ({duration = 0; Тип = Пауза;});id = ключ;type = key;}
Весь усовершенствованный пример теста:
def test_safari2(self):
driver = webdriver.Safari()
driver.get('https://www.wikipedia.org')
locator = (By.ID, 'searchInput')
# 1. the line below is passed
searchInput = WebDriverWait(driver, timeout=30).until(expected_conditions.visibility_of_element_located(locator))
# 2. the line below is failed in Safari, but passed in Chrome, FF
ActionChains(driver).move_to_element(searchInput).perform()
Однако!Если self.w3c_actions.key_action.pause()
прокомментировано внутри действия move_to_element()
, тогда работают целые цепочки действий!
def move_to_element(self, to_element):
"""
Moving the mouse to the middle of an element.
:Args:
- to_element: The WebElement to move to.
"""
if self._driver.w3c:
self.w3c_actions.pointer_action.move_to(to_element)
# self.w3c_actions.key_action.pause()
else:
self._actions.append(lambda: self._driver.execute(
Command.MOVE_TO, {'element': to_element.id}))
return self
Аналогичная ситуация с другими действиями.Мой вопрос: это известное ограничение Safari?И поэтому команда ActionChais не может быть использована для Selenium + Safari?Или есть какая-то особенность конфигурации?
Моя конфигурация бегуна:
- ОС: Mac HighSierra 10.13.6
- Safari 12.0 (13606.2.11)
- Selenium: 3.14.1
- Python: 2.7.14
- Safari запускается с возможностями w3c и протоколом (т. Е. Driver.w3c = True)
История вопроса: у меня есть достаточно развитая среда с множеством действий и тестов, которые работают хорошо для Chrome и Firefox.Сейчас я пытаюсь расширить охват браузера Safari.Поэтому я ищу решение для неработающих ActionChains