首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >winappdriver找不到使用的元素

winappdriver找不到使用的元素
EN

Stack Overflow用户
提问于 2019-10-16 19:12:45
回答 3查看 5.4K关注 0票数 1

我是自动化的新手,我正在尝试使用带有C#的WinAppDriver来自动化WPF应用程序。我可以加载应用程序,但在尝试查找名称为/AccessibilityId的元素时,即使在保持等待时间之后,也会收到类似{“使用给定的搜索参数在页面上找不到元素”这样的错误。

如下所示:

代码语言:javascript
复制
POST /session/09551C9F-CF20-4C2B-A900-F17D2483F9D8/element HTTP/1.1
Accept: application/json, image/png
Content-Length: 45
Content-Type: application/json;charset=utf-8
Host: 127.0.0.1:4723

{"using":"accessibility id","value":"TxtPwd"}
HTTP/1.1 404 Not Found
Content-Length: 139
Content-Type: application/json

{"status":7,"value":{"error":"no such element","message":"An element could not be located on the page using the given search parameters."}}

我不知道发生了什么。有什么建议吗?

我做了-通过inspect工具检查元素和automation-id/元素名称-设置开发人员模式活动-在找到元素之前等待时间

代码语言:javascript
复制
 var aDesiredCapabilities = new DesiredCapabilities();
             aDesiredCapabilities.SetCapability("app", @"PathToApplication");
             aDesiredCapabilities.SetCapability("deviceName", "Windows 10");

             var aWindow = new WindowsDriver<WindowsElement>(new Uri("http://127.0.0.1:4723"), aDesiredCapabilities);
             aWindow.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);

             aWindow.FindElementByAccessibilityId("TxtPwd").SendKeys("qwerty");
             aWindow.FindElementByAccessibilityId("TxtUser").SendKeys("123456");
             aWindow.FindElementByAccessibilityId("Clear").Click();

             aWindow.FindElementByAccessibilityId("TxtPwd").SendKeys("qwerty");
             aWindow.FindElementByAccessibilityId("TxtUser").SendKeys("123456");
             aWindow.FindElementByAccessibilityId("Login");
EN

回答 3

Stack Overflow用户

发布于 2019-10-17 22:04:06

此用户名密码字段是否显示在弹出窗口中?

启动应用程序后,在尝试访问应用程序UI元素之前进行短暂的睡眠。我的建议如下。

代码语言:javascript
复制
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10));

一种更好的方法是使用WebDriverWait类的实例来等待,直到元素加载完毕。

代码语言:javascript
复制
WebDriverWait wdv = new WebDriverWait(sessionAppWinForms, TimeSpan.FromSeconds(10));
var txtPwd = aWindow.FindElementByAccessibilityId("TxtPwd");
wdv.Until(x => txtPwd.Displayed);

更新:我建议使用WinAppDriver UI记录器检查UI控件。最新的版本不能在我的电脑上运行,这就是为什么我推荐使用1.0版本。下载链接如下所示。https://github.com/microsoft/WinAppDriver/releases/tag/UiR_v1.0-RC

WinAppDriver只是一个辅助程序,你可以在不使用它的情况下创建自动化脚本。有时,应用程序的启动时间会稍长一些,在这种情况下,您可以使用WebDriverWait类来等待某些条件为真。例如,等待某个标签或文本框出现在屏幕上。您可以使用下面的代码行无条件地等待几秒钟。

System.Threading.Thread.Sleep(5000);

我在C# .Net中用WinAppDriver教授一门关于测试自动机的Udemy课程。详细介绍了这些概念。你可能会在here看到它。

票数 1
EN

Stack Overflow用户

发布于 2019-12-17 00:42:14

应用程序可能在aWindow作用域之外的另一个窗口中打开。

您可以尝试创建一个desktop driver session并使用Process.Start()方法启动您的进程。

票数 0
EN

Stack Overflow用户

发布于 2021-03-08 15:23:05

如果您的应用程序是以管理员身份运行的,那么WinAppDriver和Inspect.exe也必须以管理员身份运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58411967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档