Appium Inspector中将WebView视为原生应用,并且无法切换到WebView以查找元素。
创始人
2024-09-10 09:01:04
0

在 Appium Inspector 中将 WebView 视为原生应用,并且无法切换到 WebView 以查找元素的问题,可以通过以下方法解决:

解决方法1:使用 Chrome DevTools Protocol

  1. 启动 Appium 服务器时,添加以下参数:

    --relaxed-security
    --chromedriver-executable=/path/to/chromedriver
    --webview-connect-timeout=20000
    
  2. 在测试脚本中使用以下代码切换到 WebView:

    from appium import webdriver
    from appium.webdriver.common.mobileby import MobileBy
    
    desired_caps = {
        'platformName': 'Android',
        'deviceName': 'device',
        'appPackage': 'your_app_package',
        'appActivity': 'your_app_activity',
        'automationName': 'UiAutomator2',
        'chromedriverExecutable': '/path/to/chromedriver'
    }
    
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
    # 切换到 WebView
    contexts = driver.contexts
    for context in contexts:
        if 'WEBVIEW' in context:
            driver.switch_to.context(context)
            break
    
    # 使用 Chrome DevTools Protocol 查找元素
    element = driver.find_element(MobileBy.ACCESSIBILITY_ID, 'element_id')
    
    # 切换回原生应用
    driver.switch_to.context('NATIVE_APP')
    

解决方法2:使用 WebdriverIO

  1. 安装 WebdriverIO:

    npm install webdriverio
    
  2. 在测试脚本中使用以下代码切换到 WebView:

    const webdriverio = require('webdriverio');
    
    const options = {
        path: '/wd/hub',
        port: 4723,
        capabilities: {
            platformName: 'Android',
            deviceName: 'device',
            appPackage: 'your_app_package',
            appActivity: 'your_app_activity',
            automationName: 'UiAutomator2',
            chromedriverExecutable: '/path/to/chromedriver'
        }
    };
    
    async function main() {
        const client = await webdriverio.remote(options);
    
        // 切换到 WebView
        const contexts = await client.getContexts();
        for (const context of contexts) {
            if (context.includes('WEBVIEW')) {
                await client.switchContext(context);
                break;
            }
        }
    
        // 使用 WebdriverIO 查找元素
        const element = await client.$('~element_id');
    
        // 切换回原生应用
        await client.switchContext('NATIVE_APP');
    
        await client.deleteSession();
    }
    
    main();
    

通过以上方法,你可以在 Appium Inspector 中将 WebView 视为原生应用,并且通过代码切换到 WebView 来查找元素。请注意,你需要将 /path/to/chromedriver 替换为你本地的 chromedriver 路径,并将 your_app_packageyour_app_activity 替换为你的应用的包名和活动名。

相关内容

热门资讯

重大来袭!爱来掌中宝有没有挂(... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
新手必备!心悦透视辅助器免费(... 新手必备!心悦透视辅助器免费(透视)wepoker游戏安装教程(wpk教程确实有挂)这是一款可以让一...
一起来探讨!新道游辅助器透视挂... 一起来探讨!新道游辅助器透视挂(透视)pokemmo脚本最新版(存在挂教程有挂教程);无需打开直接搜...
透视模拟器!好玩贰柒拾辅助(透... 透视模拟器!好玩贰柒拾辅助(透视)werplan透视挂(AI教程有挂讲解);无需打开直接搜索薇:13...
玩家必知教程!新道游辅助器免费... 哈糖大菠萝可以开挂吗是一款专注玩家量身打造的游戏记牌类型软件,在哈糖大菠萝可以开挂吗这款游戏中我们可...
如何分辨真伪!凑一桌关春天怎么... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
记者发布!途游辅助器(透视)w... 记者发布!途游辅助器(透视)wpk辅助哪里买(技巧教程证实有挂) 了解更多开挂安装加(1367043...
重磅来袭!四川皮皮辅助(透视)... 重磅来袭!四川皮皮辅助(透视)佛手在线大菠萝为什么都输(存在挂教程了解有挂);无需打开直接搜索微信(...
透视好友!小南娱乐科技(透视)... 大家好,今天小编来为大家解答小南娱乐科技这个问题咨询软件客服可以免费测试直接加微信(13670430...
总算了解!新久久辅助器(透视)... 新久久辅助器 无需打开直接搜索微信:136704302本司针对手游进行,选择我们的四大理由: 1、软...