无法在真实设备上使用 Appium 识别 iOS hyprid 应用程序自动化中 WEBVIEW 中的元素

2023-12-05

我试图使用 ionic2/Angular2 和 typescript 来自动化混合应用程序构建。

我正在使用 C# 来编写代码。 测试在 BDD -specflow 中 版本: iOS:9.3.1 代码:7.3 阿皮姆:1.4.13

将上下文切换到 WEBVIEW 后,我无法识别元素。

使用下面的代码调用 IOSDriver

private IOSDriver<IOSElement> driver = null;

public IOSDriver<IOSElement> GetDriver(string platformVersion, string deviceName, string udid ,string appPath, string serverUri)
{
    Capabilities iosCapabilities = new Capabilities();
    DesiredCapabilities capabilities = iosCapabilities.Get(platformVersion, deviceName, udid, appPath);
    driver = new IOSDriver<IOSElement>(new Uri(serverUri), capabilities, TimeSpan.FromSeconds(Constants.DriverWaitTime));
    driver.Manage ().Timeouts ().ImplicitlyWait (TimeSpan.FromSeconds(Constants.ImplicitWaitTime));

    var contextNames = driver.Contexts;
    driver.Context = contextNames[1];

    driver.FindElement(By.Xpath(locator)).Click();

}

将功能设置为

private DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.SetCapability ("appium-version", Constants.AppiumVersion);
capabilities.SetCapability ("platformName", Constants.PlatformName);
capabilities.SetCapability("autoWebView", "true");
capabilities.SetCapability("browserName", "iOS");
capabilities.SetCapability ("platformVersion", Constants.PlatformVersion);
capabilities.SetCapability("deviceName", deviceName);
capabilities.SetCapability("app", appPath);
capabilities.SetCapability("udid", udid);

我是否以正确的方式设置功能?

  1. Solution tried:
    1. 我检查了使用 browserName 功能作为空白/safari 但没有工作
    2. 另外,我安装了 ios-webkit-debug-proxy 并在 Mac 上使用后台终端启动代理
  2. 问题是我无法识别 WEBVIEW 中的元素。

我在做什么

启动应用程序后,在appium检查器中我能够 查看所有元素,我尝试单击文本框进行输入 一些价值

文本框的 Xpath(我可以在 appium 检查器窗口中查看):“//UIA应用程序1/UIA窗口1/UIScrollView2/UIAWebView1/UIA 文本字段1"

var contextNames = driver.Contexts

给我视图列表(在我的例子中,有 2 个视图:NATIVE_APP、WEBVIEW_1) WebView 上下文从 1、2、3 等动态更新。

我一打电话

diver.Context=contextNames[1]; //setting context to WEBVIEW

并刷新 appium 检查器,我无法看到/识别单个元素。一切都会消失。

为什么我在切换到 webview 后无法看到/识别元素。 (注意:一旦我切换回 driver.Context="NATIVE_APP",每个元素都会在 appium 检查器中可见,但我仍然无法单击)

它显示错误为“使用给定的搜索参数无法找到元素”

当我尝试使用 appium 检查器手动点击或发送密钥时,它也不让我这样做(使用检查器按钮手动启动应用程序后)。这里有什么问题呢。非常感谢帮助

Appium检查器截图:

enter image description here

appium 窗口中显示的错误消息:

enter image description here

这是Appium的完整日志(错误)

无法识别WEBVIEW中的元素时Appium日志的链接


  1. 从这里继续:如何在 Appium 中启用和使用 WebView for iOS Automation

尝试使用以下代码来切换上下文:

var contextNames = driver.GetContexts(); //correction to your code 
driver.SetContext(contextNames[1]);
  1. 使用 appium 时,您不一定需要以下功能:

    capabilities.SetCapability("browserName", "iOS"); //can be removed from code as well
    
  2. 我猜您可能会尝试使用 Appium Inspector 来运行/调试您的测试。在这种情况下,您可能无法使用这两个实例。请查看 appium 服务器日志以获取有关此内容的详细信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在真实设备上使用 Appium 识别 iOS hyprid 应用程序自动化中 WEBVIEW 中的元素 的相关文章

  • 在构建服务器上运行 UI 自动化测试

    我们使用 UI Automation 和 Nunit 为 WPF 应用程序创建测试 UI 测试 我们创建的测试在您从本地计算机运行时可以正常工作 这些测试从未在我们的构建服务器 使用 TeamCity 上成功运行 打开应用程序窗口后 构建始
  • 使用 PowerShell 创建 Outlook 电子邮件草稿

    我正在创建一个 PowerShell 脚本来自动化工作流程 此过程需要填写电子邮件并发送给其他人 电子邮件将始终大致遵循相同类型的模板 但每次可能都不会相同 因此我想在 Outlook 中创建电子邮件草稿并打开电子邮件窗口 以便可以在发送之
  • 如何在 Swift 中通过部分标签文本搜索来定位 XCUIElement?

    我一直在使用这种方法定位 XCUIElements app staticTexts Full Label Text 但是如果我只知道标签文本的一部分怎么办 部分标签文本是动态生成的 例如 Item 1 Item 2 等 因此我想通过查找包含
  • 如何在 Ubuntu 中为 Android 设置 Appium

    我是新来的appium 自动化测试技术 我使用的是运行 Ubuntu Linux 的 PC 我已经搜索过这个主题 但没有得到任何有用的教程 谁能指出我正确的文档 不要通过apt get安装nodejs 这需要sudo权限 如果以sudo用户
  • COM 互操作、隔离和排除重复引用

    我们在我们编写的 C dll 程序集 A 中使用 Microsoft 提供的 COM DLL dsofile dll 为了避免必须注册 COM dll 我已将对 dsofile dll 的引用的isolated 属性切换为 true 这意味
  • 无法在真实设备上的 iOS 10 上运行 Appium 测试

    自从将我的设备和 xCode 更新到 iOS 10 和 Xcode 8 以来 我一直无法在真实设备上成功设置 Appium 测试 不过 我在模拟器上运行得很好 以下是我的功能设置 DesiredCapabilities cap new De
  • 返回 Git 中的 N 个提交以查找导致测试回归的提交

    是否有一个命令可以让我根据与当前提交的距离而不是使用提交 ID 来签出提交 Use Case 基本上我正在考虑设置一个 cron 作业类型脚本来在构建服务器上执行以下操作 拉取特定 git 分支的最新版本 git pull dev 构建它
  • 您可以同时使用 Protractor 和 Appium 来测试混合应用程序吗?

    这是我的场景 我有一个基于 Angular JS 构建的网站 我能够使用量角器使网站自动化 然而 在网站上执行的某些操作会反映在 Android 和 IOS 设备中 这就是我想要实现的目标 像平常一样在网站上运行我的测试 但我也想触发命令来
  • 具有枚举功能的 Unity UI Onclick 检查器

    我有个问题 这是我的检查器窗口 在 On Click 窗口的情况下 我想设置枚举类型的参数 不是字符串或整数 换句话说 我想用 无效GoToNext DATA TYPE类型 但这并没有显示出来 即使我将枚举设置为 SerializedFie
  • API 自动化测试:有没有办法通过内容验证来自动化下载场景?

    我的应用程序中有导出到 Excel 的功能 我有一个场景 执行导出到 Excel 验证 API 响应状态和导出的 Excel 内容 使用 Postman 我可以使用 发送和下载 选项以 xlsx 格式保存导出的 Excel 稍后我可以手动验
  • Maven 父项目自动化

    我有这个结构 child C 家长 A child B 如果我尝试在没有父级的情况下安装子级 B maven 会抛出一个错误 我知道按照惯例我应该将父级安装在我的存储库中 但是有没有办法让某人拉取子级并在安装过程中安装自动父辈 编辑 我要尽
  • 使用 CRON 作业执行 PHP 脚本 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想每天午夜运行一个 PHP 脚本
  • VBA 自动化 - 预填充组合盒

    我正在尝试通过 VBA 将数据从 Excel 预填充到本地 Intranet 网站 我已经能够将大部分数据预填充到网站 但我正在努力处理这个组合日期框 请参阅 HTML 代码 div class form group row div
  • 请推荐一个简单的自动化 GUI 录制应用程序? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个应用程序来简单地记录鼠标手势和键盘敲击 然后就可以播放该录音 我将在网络上的几台计算机上运行
  • 在 Android 中使用 appium 在一个会话中自动化多个应用程序

    如何在 Android 中使用 appium 在一个会话中自动化多个应用程序 假设想要自动化一个计算器应用程序 然后是一个设置应用程序 如果您正在谈论使用同一会话同时自动化多个应用程序 那么这是不可能的 因为一个会话只能自动化一个应用程序
  • 如何使用Appium获取ios中的应用程序信息,例如应用程序版本、设备操作系统版本?

    我正在使用 appium 测试应用程序并将测试输出集成到 testrail 中 我需要在 testrail 中添加设备和应用程序信息 在 Android 中 我可以使用 adb 命令获取应用程序和设备信息 例如设备型号 设备版本和应用程序版
  • 无法实例化类型 AppiumDriver

    我在项目构建路径中添加了以下 jar java client 2 0 0 来自http appium io downloads html http appium io downloads html gt gt Appium 客户端库 gt
  • C++ GUI 桌面 Windows 应用程序的测试自动化工具/库/框架

    不幸的是 我有一个在 Windows 上运行的 GUI 桌面应用程序 并使用 Borland C 编译器进行编译 我知道这是一项非常古老的技术 但这就是生活 我工作的公司有很多免费的 QTP 许可证 但说实话 我不喜欢这个工具 我想用一些开
  • 如何在 Ansible 中运行 MySQL 查询

    我需要编写一个 Ansible 脚本来在 MySQL 数据库中执行 SQL 查询 这是我尝试过的 你能指导一下吗 hosts localhost tasks name retrive data command mysql u root h
  • 创建单个随机 Magento 优惠券

    我遇到了一些麻烦 我想要做的是每次有人订阅我们的时事通讯时 在 Magento 中自动生成一个随机优惠券代码 这张优惠券可减 10 美元 并且有exp 订阅后两周的日期 因此 我正在尝试编写一个简单的脚本 当提交 订阅我们的时事通讯 表单时

随机推荐

  • Hibernate:有第三级缓存吗?

    在一次求职面试中 一位招聘人员问我 hibernate 中有多少级缓存 所以我描述了1级和2级 他说正确 但还有第三级缓存 例如缓存一些不经常更改的表的结果 如 CURRENCY 或 COUNTRY 并在每个 12 24 您想要的时间 小时
  • 使用纯 JavaScript 获取点击元素的索引

    我需要知道单击元素的索引 不知道该怎么做 for i 0 i lt document getElementById my div children length i document getElementById my div childr
  • 将训练数据拆分为每个类的相同行数

    我有一个非常大的数据集 大约有 314554097 行和 3 列 第三列是班级 该数据集有两个类 0 和 1 我需要将数据分为测试数据和训练数据 要分割我可以使用的数据 from sklearn cross validation impor
  • 处理 contentEditable DIV 上的换行符

    我有一个问题contenteditableSAFARI CHROME 上的换行符 当我在 contentEditable 上按 返回 时 div 而不是创建一个 br 如 Firefox 他们创建了一个新的 div div Somethin
  • PostgreSQL 在触发器函数中动态修改新记录中的字段

    我有一个包含 ID 和用户名 以及其他详细信息 的用户表 以及引用该表的其他几个表 其中包含各种列名称 CONSTRAINT some name FOREIGN KEY columnname REFERENCES user userid 我
  • 在 OpenCV 中复制像素值

    我有 RGB 图像 例如尺寸为 2x2 如下 0 14 255 75 156 255 45 255 234 236 141 255 我想将每个像素 所有 RGB 通道 复制 2x2 次并获得如下所示的图像 0 14 255 0 14 255
  • 什么是 Irvine32 库以及我们为什么使用它?

    我想知道Irvine32汇编语言库是什么 我想要一个定义以及我们为什么使用这个库 我想知道汇编语言中的 Irvine32 库是什么 Irvine32 库是有用函数的集合 您可以查看在线文档了解它们的列表和更多详细信息 我想要一个防御以及为什
  • Google 日历 API - 插入活动 - 通过电子邮件通知组织者

    使用 Google 日历 API 事件 插入 我代表用户在用户的日历中创建一个事件并将他们设置为组织者 我还邀请了一位客人 我希望组织者收到类似于来宾可能收到的电子邮件通知 我尝试使用 sendUpdates 参数 但它只通知客人 有没有办
  • 我们如何使用这些指令在汇编中使用跳转?

    据我所知 组装中的跳跃基本上是从一个位置到另一个位置 说我们有 804828f 74 05 je XXXXXXX 8048291 e8 1e 00 00 00 call 80482b4 根据这本书 我真正要做的就是将 0x05 添加到 80
  • Visual Studios 在构建项目时反复出现 PDB API 调用失败

    所以我有一个项目位于另一个目录中 我将其复制并移动到另一个目录中 以便将其转储到之前运行早期版本代码的本地 git 存储库中 我知道为什么我要很好地复制这些内容 这是一个很长的故事并且无关紧要 在尝试在 Visual Studios 201
  • 奇怪的错误,链接在 jquery 'tabs+accordion' 中不起作用[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我是新来的 到处寻找答案但找不到 我正在使用 Codecanyon 的这个很棒的选项卡
  • 用法相当不同

    我想在我的小型 Web 项目中使用这个出色的 Javascript 库 http prettydiff com 我已经下载了 PrettyDiff js 和 ViewDiff js 我一直在研究如何使用它 但似乎找不到任何有关如何获取 Ja
  • Composer 需要本地包

    我有几个正在协同开发的库 Foo 和 Bar 但在技术上仍然是独立的 以前我刚刚重新定义了自动加载器 Foo Foo src 但现在我已经向 Foo 添加了 Guzzle 依赖项 Bar 翻转了它的盖子 因为它不是它的依赖项之一 目录结构
  • Python中递归子集和

    我很乐意得到一些帮助 我有以下问题 我得到了一个数字列表seq和一个目标数字 我需要写两件事 返回的递归解决方案True如果存在等于目标数的子序列之和并且False否则 例子 subset sum 1 1 5 4 0 True subset
  • 正则表达式匹配不带连续空格的用户名

    我正在努力制作一个 javascript 正则表达式来满足以下要求 第一个字符必须是字母 a zA Z 其余的可以是任何字母 任何数字 连字符 点 下划线和空格 但没有连续的空格 例如 连续两个或多个空格 长度必须在 3 到 25 之间 含
  • 在Qt中fork后获取进程的PID

    我正在创建一个成功分叉的 Qt C 控制台应用程序 当我在 fork 之前调用 QCoreApplication applicationPid 然后在 fork 之后 在子进程中 调用 QCoreApplication applicatio
  • 如何正确锁定 Task.Run() 块

    我正在编写一个应用程序 其中使用多种方法来访问某些共享资源 因此通过以下方式实现了一些安全性lock thisLock 一切都很好 直到我不得不在异步任务中使用资源 这是代码 private object thisLock new obje
  • 如何使用 Razor 语法在 ASP.NET MVC 4 中获取文本中 URL 的链接?

    我有一个带有文本字段的模型 文本can包含多个 URL 它不必包含 URL 也没有特定的格式 Using Html DisplayFor model gt model TextWithSomeUrls 当然 文本和 URL 的显示方式与普通
  • 使用 python2 和 python3 的相同代码进行编码+加密+填充时出现问题[重复]

    这个问题在这里已经有答案了 免责声明 我了解以下内容not适合在生产环境中提供 安全 它只是比对存储在我的系统上的敏感数据使用 XOR 或 rot13 更好一点 我将以下代码放在一起 以允许我对这些敏感值使用 AES 加密 AES 需要 1
  • 无法在真实设备上使用 Appium 识别 iOS hyprid 应用程序自动化中 WEBVIEW 中的元素

    我试图使用 ionic2 Angular2 和 typescript 来自动化混合应用程序构建 我正在使用 C 来编写代码 测试在 BDD specflow 中 版本 iOS 9 3 1 代码 7 3 阿皮姆 1 4 13 将上下文切换到