проблема с навигацией в appium UI сценарий python

#python #automation #appium

#python #автоматизация #appium

Вопрос:

Я новичок в python с Android. Мне нужно написать скрипт на python. в основном, что я хочу сделать, это когда вы нажимаете первый просмотр, мне нужно загрузить второй просмотр. во втором представлении есть кнопка, при нажатии которой мне нужно загрузить третье представление.

 class SimpleAndroidTests(unittest.TestCase):
def setUp(self):
    desired_caps = {}
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '4.2'
    desired_caps['deviceName'] = 'Android Emulator'
    desired_caps['app'] = PATH(
        'mypath/aaa.apk'
    )
    desired_caps['appPackage'] = 'com.xxxx'

    self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

def test_find_elementsFirstview(self):
    time.sleep(13)
    textfields = self.driver.find_elements_by_class_name("android.widget.EditText")
    textfields[0].send_keys("first text")
    textfields[1].send_keys("second text")

    el = self.driver.find_element_by_name("press Login")
    el.click()

def test_secondView(self):
  time.sleep(10)
  textfields = self.driver.find_elements_by_class_name("android.widget.EditText")
  textfields[2].send_keys("secondviewinput2")

def tearDown(self):
     # end the session
     self.driver.quit()

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(SimpleAndroidTests)
    unittest.TextTestRunner(verbosity=2).run(suite)
 

ПРОБЛЕМА в том, что он не переходит ко второму представлению. Он снова возвращает первый вид.
пожалуйста, помогите…

Ответ №1:

В вашем коде у вас есть метод setUp(self), который nose tools интерпретирует как метод «test setup», что означает, что он будет запускаться перед каждым тестом. Поскольку ваш метод setUp() создает экземпляр webdriver, он перезагружает ваше приложение перед каждым тестированием. Рассмотрите возможность переноса экземпляра вашего драйвера в setUpClass() , который nose tools будет запускаться перед всеми тестами в файле.

Пример тестового файла:

 class YourTest(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        [...runs before all tests...]

    def setUp(self):
        [...runs before each test...]

    def test_test1(self):
        [...your tests...]

    def tearDown(self):
        [...runs after each test...]

    @classmethod
    def tearDownClass(cls):
        [...runs after all tests...]
 

Ответ №2:

Когда элемент в приложении Android нажимается с помощью appium скрипта python, он appium не контролирует ожидаемое поведение. Это приложение, которое обрабатывает щелчок. Так, например, если есть Login кнопка и если вы сделаете это:

 el = self.driver.find_element_by_name("press Login")
el.click()
 

Этот щелчок по элементу обрабатывается приложением, и приложение возьмет на себя управление потоком отсюда. Это приложение запускает следующий экран. Например, это может быть форма.

По сути, appium клиент python контролирует, какой элемент пользовательского интерфейса выбрать, но то, что будет делать этот конкретный элемент пользовательского интерфейса, зависит от приложения.