Я работаю над проектом, который включает в себя одновременно управление несколькими устройствами Android из сценария Python . Во время тестирования я сталкиваюсь с проблемами в реализации эффективного многопоточного чтения с эмуляторами Android Studio, которые я изначально использую перед подключением к реальным устройствам. Я исследовал такие решения, как Appium и Selenium Server, но поиск четкой информации и простых рабочих процессов, соответствующих моим потребностям, оказывается трудным. Мои эксперименты с Appium и Selenium Server были сложными, и я изо всех сил пытаюсь найти четкую информацию или простые рабочие процессы для этой задачи. Каждый эмулятор не должен выполнять одни и те же задачи; Они должны следовать процедурному пути, изложенному сценарием Python. Я открыт, чтобы полностью изменить рабочий процесс, который я пытался реализовать.
# Function to get connected devices
def get_connected_devices():
devices_configs = []
try:
output = subprocess.check_output([adb_path, 'devices']).decode('utf-8')
devices = output.strip().split('\n')[1:]
for device in devices:
ud_id = device.split('\t')[0]
os_version = (
subprocess.check_output(
[
adb_path,
'-s',
ud_id,
'shell',
'getprop',
'ro.build.version.release',
]
)
.decode('utf-8')
.strip()
)
platform = "Android"
system_port = str(8200 + len(devices_configs))
chrome_driver_port = str(8100 + len(devices_configs))
device_details = {
"device": ud_id,
"os_version": os_version,
"ud_id": ud_id,
"platform": platform,
"systemPort": system_port,
}
devices_configs.append(device_details)
return devices_configs
except subprocess.CalledProcessError as e:
print(f"Error executing ADB command: {e}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
# Retrieve connected devices
connected_devices = get_connected_devices()
# Start Appium servers for each device
processes = []
for i in range(len(connected_devices)):
port = 4724 + i
cmd = ["start", "appium", "-p", str(port)]
process = subprocess.Popen(cmd, shell=True)
processes.append(process)
< /code>
Несмотря на это, я столкнулся с проблемами с принуждением Appium использовать определенные порты устройства, поскольку он продолжал использовать один и тот же порт для всех устройств: < /p>
# Pair each connected device with a server
device_server_pairs = list(zip(connected_devices, servers))
# Start Appium sessions using threads
with concurrent.futures.ThreadPoolExecutor() as executor:
executor.map(start_appium_session, device_server_pairs)
# Function to start Appium session for each device
def start_appium_session(device_config_server_tuple):
device_config, server = device_config_server_tuple
capabilities = {
'platformName': device_config['platform'],
'platformVersion': device_config['os_version'],
'deviceName': device_config['ud_id'],
'systemPort': device_config['systemPort'],
'app': APP_PATH,
}
driver = webdriver.Remote(server, options=UiAutomator2Options().load_capabilities(capabilities))
Я ценю любые идеи или улучшения, которые вы могли бы предоставить.
Я работаю над проектом, который включает в себя одновременно управление несколькими устройствами Android из сценария Python . Во время тестирования я сталкиваюсь с проблемами в реализации эффективного многопоточного чтения с эмуляторами Android Studio, которые я изначально использую перед подключением к реальным устройствам. Я исследовал такие решения, как Appium и Selenium Server, но поиск четкой информации и простых рабочих процессов, соответствующих моим потребностям, оказывается трудным. Мои эксперименты с Appium и Selenium Server были сложными, и я изо всех сил пытаюсь найти четкую информацию или простые рабочие процессы для этой задачи. Каждый эмулятор не должен выполнять одни и те же задачи; Они должны следовать процедурному пути, изложенному сценарием Python. Я открыт, чтобы полностью изменить рабочий процесс, который я пытался реализовать.[code]# Function to get connected devices def get_connected_devices():
# Start Appium servers for each device processes = [] for i in range(len(connected_devices)): port = 4724 + i cmd = ["start", "appium", "-p", str(port)] process = subprocess.Popen(cmd, shell=True) processes.append(process)
< /code> Несмотря на это, я столкнулся с проблемами с принуждением Appium использовать определенные порты устройства, поскольку он продолжал использовать один и тот же порт для всех устройств: < /p> # Pair each connected device with a server device_server_pairs = list(zip(connected_devices, servers))
# Start Appium sessions using threads with concurrent.futures.ThreadPoolExecutor() as executor: executor.map(start_appium_session, device_server_pairs)
# Function to start Appium session for each device def start_appium_session(device_config_server_tuple): device_config, server = device_config_server_tuple capabilities = { 'platformName': device_config['platform'], 'platformVersion': device_config['os_version'], 'deviceName': device_config['ud_id'], 'systemPort': device_config['systemPort'], 'app': APP_PATH, }
driver = webdriver.Remote(server, options=UiAutomator2Options().load_capabilities(capabilities)) [/code] Я ценю любые идеи или улучшения, которые вы могли бы предоставить.
I am a computer science student in Belgium working on a project that involves simultaneously controlling multiple Android devices from a Python script . During testing, I’m encountering challenges in implementing effective multithreading with...
I am a computer science student in Belgium working on a project that involves simultaneously controlling multiple Android devices from a Python script . During testing, I’m encountering challenges in implementing effective multithreading with...
Я работаю над проектом, который включает в себя одновременно управление несколькими устройствами Android из сценария Python . Во время тестирования я сталкиваюсь с проблемами в реализации эффективного многопоточного чтения с эмуляторами Android...
Я пытаюсь использовать evdev для асинхронного чтения входных событий в Linux, но мне нужно обрабатывать подключаемые и отключаемые устройства. Чтобы сделать мою систему относительно общей и совместимой с несколькими устройствами, мне нужен поток...
Для миграции в Android 16 моего приложения я протестировал его на виртуальном устройстве с экраном с большими радиусом закругленными углами. Я обнаружил, что мои взгляды были куплены за округлые углы. Чтобы избежать этого, мне нужно добавить...