在运行 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 应用程序是在模拟器还是真实设备上运行?

Xamarin表单,在Visual Studio Android Emulator上运行的应用程序但在真实设备上崩溃

如何在真实设备中使用离子运行移动应用程序

Qt Android 应用程序示例在真实设备上看起来很奇怪