在运行 5.1.1 的真实 Android 设备上找不到 Webview
Posted
技术标签:
【中文标题】在运行 5.1.1 的真实 Android 设备上找不到 Webview【英文标题】:Unable to find Webview on Real Android Device Running 5.1.1 【发布时间】:2015-10-07 01:54:54 【问题描述】:Webview 在带有运行版本 5.1.1 和 Appium 的 Real android 设备的混合应用程序中不可用。
在相同的 android/Appium 版本上使用模拟器也可以正常工作。
【问题讨论】:
【参考方案1】:Webview 应用程序在 Andriod 5 上显示为本机应用程序。如果您想以 webview 格式的代码自动化应用程序,请将自动化功能:automation-name 设置为 Selendroid,并将上下文设置为 webview。
foreach(String context in driver.contexts())
if(context.contains("WebView")
driver.context = context;
如果您没有 html 内容供屏幕查找选择器,请插入代码
Console.Writeline(driver.pagesource).
这样你也可以得到 html 来选择选择器
【讨论】:
我也这样做了。它适用于模拟器。但它不适用于真实设备 driver.contexts() 在真实设备的情况下仅包含本机应用程序。在模拟器的情况下,我可以将 webview 视为上下文之一。 在设备上,您是否使用自动化名称作为 selendroid 运行测试?使用 seledriod 进行测试时,appium 需要应用路径中的 apk 文件。也设置它 尝试设置相同但仍然无法在真实设备上运行。 您在功能中设置的应用价值是多少?【参考方案2】:Android 中 webview 的要点
WebView 需要 Android 4.4 或更高版本,即API 级别>=19。
应启用 WebView 调试;开发者必须在 WebView 类中启用 ‘setWebContentsDebuggingEnabled’标志。该标志可以调试加载到应用程序的任何 WebView 中的 Web 内容(HTML / CSS / javascript)。
Appium 还在底层使用 Selendroid 来支持 4.4 之前的设备上的 webview。要使用 appium 的此功能,必须在传递给 Appium 服务器的所需功能中将“automationName”指定为“selendroid”。
如果我们正在测试的混合应用程序的构建方式支持最低 Android 版本 4.0.4(API 级别 14)和最高 Android 版本 4.3(API 级别 18),那么我们可以检查 webview 元素并执行我们使用 appium 的 selendroid 模式进行自动化测试。
【讨论】:
以上是关于在运行 5.1.1 的真实 Android 设备上找不到 Webview的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 应用程序可在真实设备上运行,但无法在模拟器上运行
Android Studio 应用程序可在模拟器中运行,但不能在真实设备上运行
如何从代码中找出我的 Android 应用程序是在模拟器还是真实设备上运行?