来自浏览器的Lauch app

时间:2015-08-04 21:07:29

标签: android ios ruby integration-testing appium

我想使用Appium来测试需要通过URL方案从浏览器启动的应用。

进行什么方式?我假设我不应该在app路径中使用'app'功能,因为我不希望在测试开始后立即启动应用程序。

代码示例将不胜感激。

3 个答案:

答案 0 :(得分:0)

检查this

配置应用以侦听子域名:

<intent-filter>
  <action android:name="android.intent.action.VIEW"></action>
  <category android:name="android.intent.category.DEFAULT"></category>
  <category android:name="android.intent.category.BROWSABLE"></category>
  <data android:scheme="appname"></data>
</intent-filter>

添加指向网站的链接

market://details?id=com.example.app

答案 1 :(得分:0)

如果您测试移动网络应用,那么您无需设置应用功能。但您应该将浏览器名称功能设置为

    // java
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");

然后正常的webdriver脚本应该工作。还尝试切换到webview上下文,如下所示,然后webdriver命令将像任何桌面浏览器一样工作

   foreach(String context in driver.contexts())
    {
       if(context.contains("WebView"){
        driver.context = context;
        }
    }

答案 2 :(得分:0)

这很难做到。我会通过adb测试意图。文档here有一个示例,说明调用应该是什么样的,

<URI> <COMPONENT> <PACKAGE> You can directly specify a URI, package name, and component name when not qualified by one of the above options. When an argument is unqualified, the tool assumes the argument is a URI if it contains a ":" (colon); it assumes the argument is a component name if it contains a "/" (forward-slash); otherwise it assumes the argument is a package name.

我们的电话看起来像这样:

adb shell am start -W -a android.intent.action.VIEW -d "appName://someRoute/someID" com.appName

然后我们从代码中将它称为shell命令。在我们的案例中使用ruby的系统&#39;命令。

现在正试图弄清楚如何通过Appium意图打开应用程序到深层链接。如果你想到这一点让我知道......(悲伤)