Python. Selenium. raise AttributeError("move_to requires a WebElement") AttributeError: move_to requires a WebElement
У меня есть код:
Метод ActionChans:
# движение мышкой к элементу с последующим кликом по нему
def rat_race(self, element):
return ActionChains(self.driver).move_to_element(element).click().perform()
непосредственно метод теста:
def click_enter_with_mouse(self):
return self.rat_race(self.account_locators.BTN_VHOD)
локатор:
BTN_VHOD = (By.XPATH, ".//div[@id='new-auth']/button")
с таким кодом при прогоне теста получал ошибку
AttributeError: move_to requires a WebElement
Ответы (2 шт):
Автор решения: sdpctr
→ Ссылка
для корректной работы нужно было поправить данную часть кода, где я бы добавлял не просто локатор, а метод который находит этот элемент или даже метод с явным ожиданием
Корректный вариант
def click_enter_with_mouse(self):
return self.rat_race(self.elements_is_clickable(self.account_locators.BTN_VHOD))
Автор решения: Andrei Popruha
→ Ссылка
Ошибка возникает, потому что метод move_to_element в классе ActionChains требует в качестве аргумента объект типа WebElement, а не локатор. Вы должны сначала найти элемент с помощью метода find_element, а затем передать его в метод move_to_element.
def rat_race(self, locator):
element = self.driver.find_element(*locator)
return ActionChains(self.driver).move_to_element(element).click().perform()