使用WinAppDriver无法在记事本中打开 "文件 "或 "编辑 "菜单。

问题描述 投票:0回答:1

我试图学习如何使用WinAppDriver来测试我在VS2019中开发的桌面应用程序。

我能够使用基本的Notepad.exe和输入文本的例子运行NUnit测试。然而,我无法在Notepad中点击菜单元素,例如。如何实现这个功能?

Inspect.exe说它的名字是 "编辑"。

我使用的是Appium.WebDriver 4.1.1 nuget包。

这里有一个很好的例子来说明我想做什么,但代码已经过时了。https:/github.commicrosoftWinAppDriverblobmasterSamplesC%23NotepadTestScenarioMenuItem.cs。

VS2019中的测试代码

using NUnit.Framework;
using OpenQA.Selenium.Appium.Windows;
using System;

namespace Notepad_Tests
{
    public class Tests
    {
        protected static WindowsDriver<WindowsElement> NotepadSession;

        [SetUp]
        public void Setup()
        {
            var appiumOptions = new OpenQA.Selenium.Appium.AppiumOptions();
            appiumOptions.AddAdditionalCapability("platformName", @"Windows");
            appiumOptions.AddAdditionalCapability("deviceName", @"WindowsPC");
            appiumOptions.AddAdditionalCapability("app", @"C:\Windows\notepad.exe");
            appiumOptions.AddAdditionalCapability("app", @"C:\Windows\notepad.exe");
            appiumOptions.AddAdditionalCapability("appArguments", @"MyTestFile.txt");
            appiumOptions.AddAdditionalCapability("appWorkingDir", @"D:\MyTestFolder\");
            NotepadSession = new WindowsDriver<WindowsElement>(new Uri("http://127.0.0.1:4723"), appiumOptions);
        }

        [Test]
        public void Test1()
        {
            NotepadSession.FindElementByClassName("Edit").SendKeys("This is some text");
            NotepadSession.FindElementByName("Edit").Click();
        }
        [TearDown]
        public void TestCleanup()
        {
            // NotepadSession.Quit();
        }
    }
}

WinAppDriver.exe窗口出错

==========================================
POST /session HTTP/1.1
Accept: application/json, image/png
Connection: Keep-Alive
Content-Length: 236
Content-Type: application/json; charset=utf-8
Host: 127.0.0.1:4723
User-Agent: selenium/3.141.0 (.net windows)

{"desiredCapabilities":{"platformName":"Windows","deviceName":"WindowsPC","app":"C:\\Windows\\notepad.exe","appArguments":"MyTestFile.txt","appWorkingDir":"D:\\MyTestFolder\\"},"capabilities":{"firstMatch":[{"platformName":"Windows"}]}}
HTTP/1.1 200 OK
Content-Length: 200
Content-Type: application/json

{"sessionId":"431F0707-71BD-4645-B085-5BD750FC2067","status":0,"value":{"app":"C:\\Windows\\notepad.exe","appArguments":"MyTestFile.txt","appWorkingDir":"D:\\MyTestFolder\\","platformName":"Windows"}}


==========================================
POST /session/431F0707-71BD-4645-B085-5BD750FC2067/element HTTP/1.1
Accept: application/json, image/png
Connection: Keep-Alive
Content-Length: 37
Content-Type: application/json; charset=utf-8
Host: 127.0.0.1:4723
User-Agent: selenium/3.141.0 (.net windows)

{"using":"class name","value":"Edit"}
HTTP/1.1 200 OK
Content-Length: 96
Content-Type: application/json

{"sessionId":"431F0707-71BD-4645-B085-5BD750FC2067","status":0,"value":{"ELEMENT":"42.2099874"}}


==========================================
POST /session/431F0707-71BD-4645-B085-5BD750FC2067/element/42.2099874/value HTTP/1.1
Accept: application/json, image/png
Connection: Keep-Alive
Content-Length: 31
Content-Type: application/json; charset=utf-8
Host: 127.0.0.1:4723
User-Agent: selenium/3.141.0 (.net windows)

{"value":["This is some text"]}
HTTP/1.1 200 OK
Content-Length: 63
Content-Type: application/json

{"sessionId":"431F0707-71BD-4645-B085-5BD750FC2067","status":0}

==========================================
POST /session/431F0707-71BD-4645-B085-5BD750FC2067/element HTTP/1.1
Accept: application/json, image/png
Connection: Keep-Alive
Content-Length: 31
Content-Type: application/json; charset=utf-8
Host: 127.0.0.1:4723
User-Agent: selenium/3.141.0 (.net windows)

{"using":"name","value":"Edit"}

HTTP/1.1 200 OK
Content-Length: 128
Content-Type: application/json

{"sessionId":"431F0707-71BD-4645-B085-5BD750FC2067","status":0,"value":{"ELEMENT":"42.3148312.3.-2147483646.27904.691604525.2"}}


==========================================
POST /session/431F0707-71BD-4645-B085-5BD750FC2067/element/42.3148312.3.-2147483646.27904.691604525.2/click HTTP/1.1
Accept: application/json, image/png
Connection: Keep-Alive
Content-Length: 2
Content-Type: application/json; charset=utf-8
Host: 127.0.0.1:4723
User-Agent: selenium/3.141.0 (.net windows)

{}
HTTP/1.1 400 Bad Request
Content-Length: 175
Content-Type: application/json

{"status":105,"value":{"error":"element not interactable","message":"An element command could not be completed because the element is not pointer- or keyboard interactable."}}
nunit winappdriver appium-desktop
1个回答
0
投票

我通过使用Microsoft.WinAppDriver.Appium.WebDriver Prerlease nugget包,而不是Appium.WebDriver 4.1.1 nuget包,使其工作。

然后,这里的例子就可以完美地工作了。

https:/github.commicrosoftWinAppDriverblobmasterSamplesC%23NotepadTestScenarioMenuItem.cs。

© www.soinside.com 2019 - 2024. All rights reserved.