Как эффективно управлять несколькими устройствами Android параллельно с Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как эффективно управлять несколькими устройствами Android параллельно с Python?

Сообщение Anonymous »

Я работаю над проектом, который включает в себя одновременно управление несколькими устройствами 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))
Я ценю любые идеи или улучшения, которые вы могли бы предоставить.

Подробнее здесь: https://stackoverflow.com/questions/780 ... ith-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»