我正在尝试学习 Appium 并将其用于 WPF 应用程序测试。针对计算器或记事本的测试运行良好,但最近我在尝试测试自定义 WPF 应用程序时遇到了问题。
Appium 桌面应用程序测试抛出“使用给定的搜索参数无法在页面上找到一个元素”异常,但在测试运行之前启动应用程序时可以顺利通过。所以我猜我的设置/初始化阶段在某种程度上是不正确的,但我不知道为什么。
在没有先启动应用程序的情况下运行测试时会发生错误(因此当设置阶段必须启动应用程序时)。当应用程序在测试运行之前启动时,测试通过,或者即使它在之前失败的测试运行中保持打开状态。
应用程序启动大约需要 10 到 15 秒,在此期间首先出现斜线屏幕,然后是应用程序的主窗口。
项目中使用了Appium.WebDriver nuget packege,版本3.0.0.2
我已经尝试了 Thread.Sleep 30 秒,但它并没有解决问题。
[TestFixture]
public class DesktopAppSession
{
protected WindowsDriver<WindowsElement> _session;
protected const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";
protected const string AppId = @"<path to app.exe>";
[SetUp]
public void TestInit()
{
if (_session != null)
return;
var appCapabilities = new DesiredCapabilities();
appCapabilities.SetCapability("app", AppId);
appCapabilities.SetCapability("deviceName", "WindowsPC");
_session = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl), appCapabilities);
Assert.IsNotNull(_session);
Thread.Sleep(TimeSpan.FromSeconds(30));
_session.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
}
[TearDown]
public void TestCleanup()
{
if (_session != null)
{
_session.Quit();
_session = null;
}
}
[Test]
public void UserInfoModalShowsUp()
{
var userInfoButtonAName = "UserInfoButtonAName";
var userInfoButtonId = "UserInfoButtonAID";
var userInfoButton = _session.FindElementByAccessibilityId(userInfoButtonId);
Assert.True(userInfoButton != null);
userInfoButton.Click();
var userDetailsTitleLabel = _session.FindElementByName("User details");
userDetailsTitleLabel?.Click();
Assert.True(true);
}
}
异常消息:
System.InvalidOperationException HResult=0x80131509 Message=使用给定的搜索参数无法在页面上找到元素。Source=WebDriver StackTrace:在 OpenQA.Selenium.Remote.RemoteWebDriver.Execute 的 OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(响应 errorResponse)(字符串 driverCommandToExecute,字典2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
at OpenQA.Selenium.Appium.AppiumDriver
1.FindElement(字符串依据,字符串值)
来自 WinAppDriver 的日志:
“POST /session/23293B57-F396-47CC-83EF-FCA491E269B0/元素 HTTP/1.1 接受:application/json, image/png 内容长度:56 内容类型:应用程序/json;charset=utf-8 主机:127.0。 0.1:4723
{"using":"accessibility id","value":"UserInfoButtonAID"} HTTP/1.1 404 Not Found Content-Length: 139 Content-Type: application/json
{"status":7,"value":{"error":"no such element","message":"使用给定的搜索参数无法在页面上找到一个元素。"}}"