(Python + Android) Appium не может найти элемент по идентификатору, но может по XPATH - PullRequest
0 голосов
/ 28 февраля 2020

Я работал над двойным набором тестов Appium / Selenium для веб-страницы и мобильного приложения. При использовании Appium он не может найти элемент по ID. Если я изменяю его на использование XPATH, он работает как положено, но не может найти следующий элемент по идентификатору. Может показаться, что это не проблема, но другие элементы в приложении трудно отличить по значениям XPATH.

Этот тестовый набор ранее работал с ручной установкой приложения и службой Appium, работающей на Ma c. С тех пор я пытался автоматизировать процесс установки приложения и программного запуска Appium Service. Мне интересно, если я настроил это так, чтобы он не обнаруживал элементы по идентификатору.

Я точно знаю, что идентификатор правильный. Это работает для комбинации Selenium + веб-страницы, и я попытался покопаться в приложении с Appium Studio. Он правильно отображает идентификатор в приложении, и копирование вставки идентификатора в мой код ничего не меняет.

Android аппаратное обеспечение - версия 8.1.0

версия Appium, которую я не могу найти; Я использую последний Appium- Python -Клиент (0.50)

Код ниже (redesign_tags и redesign_locators содержат некоторую конфиденциальную информацию, но они работают так, как задумано в потоке Selenium):

class Driver:
    desired_capabilities = {}

    def __init__(self):
        # AppiumService was not called in previous version
        redesign_tags.appium_service = AppiumService()
        redesign_tags.appium_service.start()

        self.desired_capabilities[redesign_tags.platform_name_label] = redesign_tags.platform_device_name_android_label
        self.desired_capabilities[redesign_tags.no_reset_label] = redesign_tags.no_reset_value
        self.desired_capabilities[redesign_tags.platform_device_name_label] = redesign_tags.platform_device_name_galaxy_8
        self.desired_capabilities["app"] = "/Path/To/android-app.apk" # this line did not exist in the old version
        self.desired_capabilities[redesign_tags.app_package_label] = redesign_tags.app_package_value_dev
        self.desired_capabilities[redesign_tags.app_activity_label] = redesign_tags.app_activity_value
        self.instance = webdriver.Remote(redesign_tags.link_to_wd_hub, self.desired_capabilities)
        time.sleep(10)  # wait for application install
        print("Installed application")
def setupDevice():
    if redesign_tags.platform == "Android":
        print("Installing application...")
        driver = Driver()
    elif redesign_tags.platform == "Chrome":
        options = webdriver.ChromeOptions()
        options.add_argument('--start-maximized')
        options.add_argument('--unlimited-storage')
        driver = webdriver.Chrome(options=options)
        driver.get("localhost:8100")
        redesign_tags.webdriver = driver
        driver.set_window_position(0, 0)
        driver.maximize_window()
    else:
        print("Invalid platform specified")
        return False

    print("Registering device...")
    pairing = PairingPage(driver)
    # this element is not found by Appium
    pairing_credentials = pairing.get_element_by_id(redesign_locators.pairing_credentials_button, 25)
...