Форум сайта python.su
Привет всем!
Пробую автоматизировать десктопную аппликацию на Windows и мак'е. Основная проблема что с десктопной аппликации при подключении пользователя запускается браузер в котором надо ввести данные пользователя и после этого опять возврощаемся в десктопную аппликацию. На Windows эту проблему решил с помощью такого кода:
desktopCapabilities = {} desktopCapabilities["app"] = "Root" web_desktop = webdriver.Remote("http://127.0.0.1:4723", desktopCapabilities) web_desktop.window_handles win = web_desktop.find_element_by_class_name('MozillaWindowClass') win_handle1 = win.get_attribute("NativeWindowHandle") win_handle = format(int(win_handle1), 'x') desired_caps = {} desired_caps["appTopLevelWindow"] = win_handle driver = webdriver.Remote("http://127.0.0.1:4723", desired_caps) driver.switch_to.window(win_handle)
Отредактировано FishHook (Дек. 22, 2021 11:31:41)
Офлайн
Andriuha
Здесь искали?
Офлайн
Большое спасибо, но пока безрезультатно и уже не знаю куда копать.
import time import pytest from appium import webdriver def generate_capabilities(): desktop_browser_capabilities = { 'platformName': 'Mac', } return [desktop_browser_capabilities] @pytest.fixture(params=generate_capabilities()) def driver(request): driver = webdriver.Remote('http://localhost:4723/wd/hub', request.param) yield driver driver.quit() def test_signin_page(driver): # в это время кликаю на броузер с открытой нужной страницей имитируя что браузер был открыт из # апликации, чтобы он был активный time.sleep(10) driver.window_handles win = driver.find_element_by_xpath(r"/AXApplication[@AXTitle='Safari']/AXWindow[@AXTitle='Sign in - Google Accounts'") print(f'\nBrowser name: {driver.current_url}') # здесь печатает: Safari win_handle1 = win.get_attribute("NativeWindowHandle") desired_caps = {'platformName': 'Mac'} desired_caps["appTopLevelWindow"] = win_handle1 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.switch_to.window(win_handle1) # этого элемента уже не находит driver.find_element_by_name('Email or phone')
Офлайн
Жаль конечно что не получилось подключиться с помощью Selenium'а, но получилось это сделать с помощью AppleScript'а. Может кому пригодится.
import subprocess def fill_form(): cmd = """ to submitForm(elementId, elementNum, inputValue) tell application "Safari" tell current tab of window 1 do JavaScript "document.getElementById('" & elementId & "').value='" & inputValue & "'; document.forms[" & elementNum & "].submit()" delay 2 end tell end tell end submitForm submitForm("identifier_field", 0, "user_email_or_name") submitForm("password_field", 0, "user_password") """ result = subprocess.run(['osascript', '-e', cmd], capture_output=True) return result.stdout fill_form()
Отредактировано Andriuha (Дек. 31, 2021 10:47:42)
Офлайн