Не удалось найти локатор в appium python

введите описание изображения здесь Я новичок в клиенте appium python и мне нужны ваши предложения, чтобы решить мою проблему, указанную ниже. PFA uiautomator viewer  введите описание изображения здесь снимок экрана. Не уверен, что это причина: после ввода в поле электронной почты открывается клавиатура, поэтому пароль и кнопка входа не находятся. Я загрузил бесплатный образец xxx.apk и создал ниже скрипт для его проверки:

class CareZoneAndroidTests(unittest.TestCase):
    "Class to run tests against the Care Zone app"
    def setUp(self):
        "Setup for the test"
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '4.2'
        desired_caps['deviceName'] = 'Android Emulator'
        # Returns abs path relative to this file and not cwd
        desired_caps['app'] = os.path.abspath(os.path.join(os.path.dirname(__file__),'D:/Programs/myapp/CareZone_v6.6.0.0 (flagship)_apkpure.com.apk'))
        desired_caps['appPackage'] = 'com.carezone.caredroid.careapp.medications'
        desired_caps['appActivity'] = 'com.carezone.caredroid.careapp.ui.activity.LandingActivity'
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    def tearDown(self):
        "Tear down the test"
        self.driver.quit()

    def test_login(self):
        "Test the Login Page launches correctly"
        self.driver.implicitly_wait(120)
        print "After WAIT----------------->>>>>>>"
        #Click on Sign in button
        element = self.driver.find_element_by_id("com.carezone.caredroid.careapp.medications:id/welcome_page_sign_toolbar_action")
        self.driver.implicitly_wait(15)
        element.click()
        element = self.driver.find_element_by_id("com.carezone.caredroid.careapp.medications:id/welcome_page_sign_mail_edit")
        self.driver.implicitly_wait(10)
        element.click()
        element.send_keys("[email protected]");
        element = self.driver.find_element_by_id("com.carezone.caredroid.careapp.medications:id/welcome_page_sign_password_edit")
        element.click()
        element.send_keys("abc");
        self.driver.implicitly_wait(10)
        #element = self.driver.find_element_by_id("com.carezone.caredroid.careapp.medications:id/welcome_page_sign_bton")
        #element = self.driver.find_element_by_accessibility_id('Sign In')
        element = self.driver.find_element_by_android_uiautomator('new UiSelector().text("Sign In")')
        element.click()

Проблема:

test_login (main .CareZoneAndroidTests) Проверьте правильность запуска страницы входа ... После WAIT ----------------- >>>>>>> ERROR

================================================== ==================== ОШИБКА: test_login (main .CareZoneAndroidTests) Проверьте правильность запуска страницы входа --------- -------------------------------------------------- ----------- Отслеживание (последний вызов последним): файл "D: \ Programs \ myapp \ CareZoneTests.py", строка 42, в test_login element = self.driver.find_element_by_android_uiautomator ('новый UiSelector ( ) .text ("Sign In") ') Файл "D: \ Programs \ Python275 \ lib \ site-packages \ appium \ webdriver \ webdriver.py", строка 133, в find_element_by_android_uiautomator return self.find_element (by = By.ANDROID_UIAUTOMATOR , value = uia_string) Файл "D: \ Programs \ Python275 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py", строка 752, в find_element 'value': value}) ['value'] File » D: \ Programs \ Python275 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py ", строка 236, в файле execute self.error_handler.check_response (ответ)" D: \ Programs \ Pytho n275 \ lib \ site-packages \ appium \ webdriver \ errorhandler.py ", строка 29, в check_response поднять wde NoSuchElementException: Сообщение: элемент не может быть расположен на странице с использованием заданных параметров поиска.

Пытался описать ниже, но все не работают по одной и той же причине:

  • element = self.driver.find_element_by_id ("com.carezone.caredroid.careapp.medications: id / welcome_page_sign_bton")

  • element = self.driver.find_element_by_accessibility_id ('Войти')

  • element = self.driver.find_element_by_android_uiautomator ('новый UiSelector (). text ("Войти")')


person JLyon    schedule 05.03.2017    source источник


Ответы (2)


Попробуйте найти элемент по ID:

  • element = self.driver.find_element_by_id ('Войти')

обновлено:

Попробуйте поставить hidekeyboard(); перед выполнением действия выбора элемента, чтобы скрыть клавиатуру!

person Emna Ayadi    schedule 06.03.2017
comment
Спасибо @Emna. Я заметил, что когда я набираю адрес электронной почты, в эмуляторе открывается клавиатура. Когда драйвер пытается найти поле пароля или кнопку входа в систему из-за клавиатуры, локаторы не обнаруживаются. Как я могу решить эту проблему? Прикрепление снимка экрана эмулятора - person JLyon; 06.03.2017
comment
см. мой ответ на этот вопрос: stackoverflow.com/questions/41977959/ - person Emna Ayadi; 06.03.2017
comment
Спасибо @Emna. Я добавил кнопку вкладки, и это решило мою проблему. - person JLyon; 13.03.2017

Код ниже работал у меня нормально:

class CareZoneAndroidTests(unittest.TestCase):
    "Class to run tests against the Care Zone app"
    def setUp(self):
        "Setup for the test"
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '4.2'
        desired_caps['deviceName'] = 'Android Emulator'
        # Returns abs path relative to this file and not cwd
        desired_caps['app'] = os.path.abspath(os.path.join(os.path.dirname(__file__),'D:/Programs/myapp/CareZone_v6.6.0.0 (flagship)_apkpure.com.apk'))
        desired_caps['appPackage'] = 'com.carezone.caredroid.careapp.medications'
        desired_caps['appActivity'] = 'com.carezone.caredroid.careapp.ui.activity.LandingActivity'
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    def tearDown(self):
        "Tear down the test"
        self.driver.quit()

    def test_login(self):
        "Test the Login Page launches correctly"
        self.driver.implicitly_wait(120)
        print "Sign in Page"
        element = self.driver.find_element_by_xpath("//android.widget.TextView[@text='Have an account? Sign In']")
        self.driver.implicitly_wait(15)
        element.click()

        element = self.driver.find_element_by_id("com.carezone.caredroid.careapp.medications:id/welcome_page_sign_mail_edit")

        element.click()
        element.send_keys("[email protected]");
        self.driver.implicitly_wait(3)
        self.driver.keyevent(61)

        element = self.driver.find_element_by_id("com.carezone.caredroid.careapp.medications:id/welcome_page_sign_password_edit")
        element.click()
        element.send_keys("ni");
        self.driver.implicitly_wait(3)
        print "Click TABS 2 times to get Sign In button-->>>>>>>"
        self.driver.keyevent(61)
        self.driver.keyevent(61)


        element = self.driver.find_element_by_id("com.carezone.caredroid.careapp.medications:id/welcome_page_sign_bton")

        element.click()
        self.driver.implicitly_wait(120)
        print "TEST OK"
person JLyon    schedule 13.03.2017