You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Appium自动化Android设备中原生App跳转的Okta登录页面?

解决Appium自动化浏览器中Okta登录页面的方案

当原生App跳转至浏览器打开Okta页面时,核心问题是Appium默认处于原生应用上下文,无法直接定位Web页面元素,需通过上下文切换实现Web页面自动化,具体步骤如下:

1. 配置Desired Capabilities以支持WebView自动化

创建Android Driver时添加Chrome相关配置,确保Appium能识别并连接浏览器的WebView:

driver = create_android_driver(device_id,{
                'appium:app': os.path.join(os.environ["BASE_HOME"],'app','app.apk'),
                'appium:udid': device_id,
                'appium:autoGrantPermissions': True,
                # 添加Chrome配置,指定浏览器包名(以Chrome为例)
                'appium:chromeOptions': {
                    'androidPackage': 'com.android.chrome',
                    'w3c': False  # 部分旧版本Chrome需关闭W3C模式
                }
            })

2. 切换到浏览器的WebView上下文

点击SSO按钮跳转浏览器后,等待页面加载完成,获取并切换到对应WebView上下文:

# 点击SSO按钮后,等待浏览器启动(建议用显式等待替代固定休眠)
import time
time.sleep(3)

# 获取所有可用上下文
contexts = driver.contexts
# 筛选出WebView上下文(通常格式为'WEBVIEW_com.android.chrome')
web_context = next((ctx for ctx in contexts if 'WEBVIEW' in ctx), None)

# 切换到WebView上下文
if web_context:
    driver.switch_to.context(web_context)

3. 自动化Okta登录页面

切换上下文后,即可用常规Web元素定位方式操作Okta页面:

from selenium.webdriver.common.by import By

# 定位并输入Okta邮箱
okta_email_input = driver.find_element(By.ID, 'okta-signin-username')
okta_email_input.send_keys(DEPLOYMENT_CONFIG[deployment_name].get("OPERATOR_EMAIL"))

# 定位并输入Okta密码
okta_password_input = driver.find_element(By.ID, 'okta-signin-password')
okta_password_input.send_keys(DEPLOYMENT_CONFIG[deployment_name].get("OPERATOR_PASSWORD"))

# 点击登录按钮
okta_login_btn = driver.find_element(By.ID, 'okta-signin-submit')
okta_login_btn.click()

4. 登录完成后切换回原生应用上下文

Okta登录成功后页面通常会跳转回原App,此时需切回原生上下文继续操作:

# 等待页面跳转回原生App(建议用显式等待)
time.sleep(3)
# 切换回原生上下文
driver.switch_to.context('NATIVE_APP')

# 后续可继续验证原生App内的登录状态

注意事项

  • 用WebDriverWait替代固定休眠:比如等待WebView上下文出现、元素可点击,提升脚本稳定性。
  • 确认浏览器包名:若设备默认浏览器不是Chrome,需替换androidPackage为对应浏览器包名(如三星浏览器为com.sec.android.app.sbrowser)。
  • 匹配ChromeDriver版本:确保Appium使用的ChromeDriver版本与设备浏览器版本兼容,版本不匹配会导致无法连接WebView。

内容的提问来源于stack exchange,提问作者Nikhil Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 06:57:15