Я работал над двойным набором тестов 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)