我已经在 windows phone 8 应用程序中搜索了自动化 UI,但我没有得到任何有用的工具或框架,那么是否有任何框架可以在 windows phone 8 中自动化 UI 应用程序?
3 回答
您可以使用 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 由两个基本部分组成:
Winium.StoreApps.Driver实现 Selenium Remote WebDriver 并监听 JsonWireProtocol 命令。负责启动模拟器、部署AUT、模拟输入、转发命令到Winium.StoreApps.InnerServer等。
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();
}
}
我目前正在使用这个开源的 Windows Phone 自动化
项目,对我来说效果很好。
看看这个项目: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");
}
我目前正在调查 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 进行了一些练习时,我都会更新我的回复——我需要自己编写测试并在实际设备上运行它们。