Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Ошибка при запуске appium+python "object has no attribute 'execute'"

mobile
appium
python
Теги: #<Tag:0x00007fedbbb65d68> #<Tag:0x00007fedbbb65ac0> #<Tag:0x00007fedbbb65778>

(Ivan Pletin) #1

Здравствуйте.
При запуске теста appium+python получаю ошибку AttributeError: “scroll_page” object has no attribute ‘execute’.

вот функция которую я запускаю. консоль указывает ошибку в третьей строке

def scroll_page(self):
      action = TouchAction(self).press(x=125, y=119).move_to(x=125, y=572).release()
      action.perform()

Подскажите решение плиз


(Pavel) #2

Могу предположить, что Вы передаете в конструктор класса TouchAction не WebDriver.


(Ivan Pletin) #3

Ошибка вроде как в строке action.perform().
Я пробовал передавать значение в скобках и нет. Ошибки разные:

И вроде как, в обоих случаях не правильное значение в скобках


(Pavel) #4

Посмотрите на код TouchAction https://github.com/appium/python-client/blob/master/appium/webdriver/common/touch_action.py

def __init__(self, driver=None):
        self._driver = driver
        self._actions = []

Конструктор класса TouchAction прнимает WebDriver в качестве параметра и сохраняет его в переменной self._driver, но Вы передаете параметр self, который ссылается на экземпляр вашего класса 'scroll_browser_page'. Когда в последствии вы выполняете perform, то вызывается следующий код:

def perform(self):
        """Perform the action by sending the commands to the server to be operated upon
        """
        params = {'actions': self._actions}
        self._driver.execute(Command.TOUCH_ACTION, params)

        # get rid of actions so the object can be reused
        self._actions = []

        return self

Этот код self._driver.execute пытается у вашего класса 'scroll_browser_page' найти метод execute и не находит, на что и ругается.

Используйте TouchAction(cls.driver)