如何在Appium iOS中获取类似Android driver.getActivity()的AppActivity及当前ViewController
获取iOS当前ViewController的方法
方法1:用Appium扩展命令
mobile: getCurrentContext
这个命令能返回比driver.context()更详细的上下文数据,其中包含当前ViewController的类名。示例代码:current_context_details = driver.execute_script('mobile: getCurrentContext') print(current_context_details['viewController'])注意:需要Appium版本足够新,且XCUITest驱动支持该命令。
方法2:调用XCUITest原生API(原生应用适用)
针对原生iOS应用,可通过执行脚本调用XCUITest的API直接获取顶层ViewController:vc_class_name = driver.execute_script(""" let app = XCUIApplication(); let window = app.windows.element(at: 0); let topVC = window.value(forKeyPath: "rootViewController.topViewController") as? UIViewController; return topVC?.className; """) print(vc_class_name)这种方式能精准拿到当前显示的ViewController类名,适合原生应用场景。
方法3:解析Appium页面源
获取页面源后,通过XML解析查找包含ViewController信息的节点:page_source = driver.page_source # 用XML解析库(比如Python的lxml)处理page_source,提取ViewController类名这个方法适合无法使用前两种命令的场景,但需要根据应用的UI结构调整解析逻辑。
实际使用时优先试方法1,若环境不支持再用方法2,方法3作为备选方案。
内容的提问来源于stack exchange,提问作者Harshit
相关产品推荐
相关产品推荐

