- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前的职位是 SDET,我被要求研究是否可以使用 Xcode 和 XCUITest 来自动化混合应用程序的 UI 测试。我们有一个正在内部构建的应用程序,它有一个围绕其他应用程序的本地包装器,这些应用程序被作为 cocoapods 引入。这些应用程序之一是基于 WebView 的,这就是给我带来问题的原因。
我很习惯使用 Xcode 和 Swift 来编写一般的 UI 自动化,并且我很习惯使用调试器来分析应用程序的元素层次结构。但是,特别是对于这个应用程序,我无法看到作为 webview 后代的元素。
当我在调试器中执行 po 命令时,我得到的只是一个如下所示的 block :
WebView, 0x600002d6c000, {{0.0, 82.0}, {1024.0, 1284.0}}
WebView, 0x600002d6c0e0, {{0.0, 82.0}, {1024.0, 1284.0}}
WebView, 0x600002d6c1c0, {{0.0, 82.0}, {1024.0, 1284.0}}
Other, 0x600002d6c2a0, {{991.0, 87.5}, {30.0, 1267.5}}, label: 'Vertical scroll bar, 2 pages', value: 0%
Other, 0x600002d6c380, {{11.0, 1333.0}, {1002.0, 30.0}}, label: 'Horizontal scroll bar, 1 page', value: 0%
这仅在让我验证 webview 已加载之前有用。它不允许我验证其中的任何内容。
现在,我还通过谷歌搜索了解到,假设我在模拟器中运行我的应用程序,我可以打开 Safari 并查看 webview 的源代码。我可以确认这对我有用。但是,这实际上并没有告诉我是否可以从 XCUITest 自动化访问 webview 的元素,如果可以,我需要如何引用它们。由于我实际上无法在调试器中看到它们,因此我很难真正接触到它们。尝试进行 UI 记录器 session 是行不通的,因为 UI 记录器也无法确认元素的存在。
我还通过谷歌搜索了解到的最后一件事是,我发现的绝大多数页面,包括 Stack Overflow 上的页面,都在谈论在 Appium 中进行基于 webview 的自动化。但是,我被特别要求做的是看看在 XCUITest 中是否可行。
所以我的总体问题是:这可能吗?关于如何获取 webview 的后代,我是否遗漏了什么?
我看到过关于 Appium 需要将“上下文”从 native 上下文切换到 webview 上下文的讨论,但我没有在 XCUITest 领域找到任何对等效概念的引用。我对任何其他有用的数据都一无所知。
编辑以添加快速后续评论:
我刚刚在 Apple 开发者论坛上进行了搜索,我在那里看到了某人的评论,这实际上可能是我问题的根源。他们说:
Same problem here, seems like on ios: 13.3 Webview element is empty :/ while on iOS 13.1 and 13.2 Webview comes with all the elements inside Wbview, any help ?
Source link对于参加 Apple 开发者计划的人,请发表评论。
考虑到这一点,谁能确认我是否真的遇到了 Xcode 功能更改或此处的错误?
再进行一次编辑以添加有关我的开发环境的详细信息,因为它们与问题相关:
在此先感谢您的帮助!
最佳答案
我正在回答我自己的问题只是因为这可能对其他人有帮助,但如果其他人有相关数据请说出来!
根据我在帖子中引用的 Apple Developer 论坛链接的指导,我能够确认如果我针对 13.2 而不是 13.3 构建我们的应用程序,我不会重现我的问题。
所以我似乎遇到了 Xcode 11.3.1 或 iPadOS 13.3 中的错误。如果我针对 13.2 构建,我可以很好地看到我的 webview 的后代。
任何其他 SDET/QA 工程师,如果您遇到类似的问题并且您可以选择这样做,您应该下载一个 13.2 模拟器,看看是否可以针对它进行测试。或者如果您有可用的设备,则针对运行 13.2 的设备。
关于swift - 如何让 Xcode 在混合应用程序的 webview 中查找元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59904130/
我是一名优秀的程序员,十分优秀!