3

我已经在 windows phone 8 应用程序中搜索了自动化 UI,但我没有得到任何有用的工具或框架,那么是否有任何框架可以在 windows phone 8 中自动化 UI 应用程序?

4

3 回答 3

2

您可以使用 Winium。

为什么选择 Winium?

  • 你有 Selenium WebDriver 用于测试 web 应用程序,Appium 用于
    测试 iOS 和 Android 应用程序。
    现在,您也拥有了用于测试 Windows 应用程序的基于 Selenium 的工具。有哪些好处?正如 Appium 所说:

  • 您可以使用任何与 WebDriver 兼容的语言,例如Java、Objective-C、带有 Node.js(promise、回调或生成器风格)的 JavaScript、PHP、Python、Ruby、C#、Clojure或 Perl ,使用您最喜欢的开发工具编写测试使用 Selenium WebDriver API 和特定语言的客户端库。

  • 您可以使用任何测试框架。

这个怎么运作?

Winium.StoreApps 由两个基本部分组成:

  1. Winium.StoreApps.Driver实现 Selenium Remote WebDriver 并监听 JsonWireProtocol 命令。负责启动模拟器、部署AUT、模拟输入、转发命令到Winium.StoreApps.InnerServer等。

  2. Winium.StoreApps.InnerServer(应该嵌入到 AUT 中的那个)与 Winium.StoreApps.Driver.exe 通信并在应用程序内部执行不同的命令,例如查找元素、获取或设置文本值、属性等。

在此处输入图像描述

测试样品:

Python

# coding: utf-8
import unittest

from selenium.webdriver import Remote


class TestMainPage(unittest.TestCase):
desired_capabilities = {
      "app": "C:\\YorAppUnderTest.appx"
  }

  def setUp(self):
      self.driver = Remote(command_executor="http://localhost:9999",
                         desired_capabilities=self.desired_capabilities)

  def test_button_tap_should_set_textbox_content(self):
      self.driver.find_element_by_id('SetButton').click()
      assert 'CARAMBA' == self.driver.find_element_by_id('MyTextBox').text

  def tearDown(self):
      self.driver.quit()


if __name__ == '__main__':
unittest.main()

Please check the link below. It can help you a lot.

You just have to follow guidance in this project.

C#

using System;
using NUnit.Framework;
using OpenQA.Selenium.Remote;

[TestFixture]
public class TestMainPage
{
  public RemoteWebDriver Driver { get; set; }

  [SetUp]
  public void SetUp()
  {
      var dc = new DesiredCapabilities();
      dc.SetCapability("app", "C:\\YorAppUnderTest.appx");
      this.Driver = new RemoteWebDriver(new Uri("http://localhost:9999"), dc);
  }

  [Test]
  public void TestButtonTapShouldSetTextboxContent()
  {
      this.Driver.FindElementById("SetButton").Click();
      Assert.IsTrue("CARAMBA" ==       this.Driver.FindElementById("MyTextBox").Text);
  }

  [TearDown]
  public void TearDown()
  {
      this.Driver.Quit();
  }
}

Winium.StoreApps

我目前正在使用这个开源的 Windows Phone 自动化

项目,对我来说效果很好。

于 2016-03-15T07:21:39.937 回答
0

看看这个项目:http ://code.msdn.microsoft.com/wpapps/Simple-UI-Test-for-Windows-dc0573a9

它展示了如何模拟单击按钮并检索另一个元素的值。

我自己没有尝试过,但原理似乎是:

创建一个单独的测试项目

在您的测试初始化​​代码中,从您的应用项目中实例化一个页面:

public void Init() 
{                
    mp1 = new PhoneApp1.MainPage(); 
} 

您的测试通过引用该实例化页面来查找元素:

[TestMethod] 
[Description("Test1:  Clicking button passes")] 
public void PassedTest() 
{ 
    var b = mp1.FindName("button1") as Button; 
    ButtonAutomationPeer peer = new ButtonAutomationPeer(b); 
    IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider; 
    invokeProv.Invoke();                          
    Assert.AreEqual((mp1.FindName("AppTitle") as TextBlock).Text.ToString(), "Results"); 
}
于 2013-05-15T00:53:05.060 回答
0

我目前正在调查 CodedUI 测试,因为它们可能是解决方案。以下是 Microsoft 应用程序生命周期管理博客的官方声明:http: //blogs.msdn.com/b/visualstudioalm/archive/2014/04/05/using-coded-ui-to-test-xaml-based-windows -phone-apps.aspx

我想在文章中强调一些非常具体的细节:

  • 您至少需要有 Visual Studio 2013 Update 2
  • 引用文章:

当前不支持用于在 XAML 应用中托管 HTML 内容的 WebView 控件。

  • 您还可以与 Shell 控件进行交互——这些控件不是 XAML,但对于测试你的应用程序 E2E 至关重要——例如磁贴、确认对话框等。这些控件由操作系统提供,而不是 XAML。

  • 最后提到的限制:

仅支持基于 XAML 的商店应用程序。Silverlight 和基于 HTML 5 的应用程序无法使用编码的 UI 进行测试。

每当我对 Windows Phone 8 应用程序的 CodedUI 进行了一些练习时,我都会更新我的回复——我需要自己编写测试并在实际设备上运行它们。

于 2015-01-21T13:01:42.257 回答