Appium WinAppDriver FindElement 不工作错误 400,错误的请求

问题描述

我正在创建用于演示的概念验证 UI 自动化测试。当我使用检查工具查看我想要输入到 AutomationID 的文本框时,它被设置为“Memery”。我写了以下代码

namespace Tests
{
    [TestClass]
    public class WpfTest
    {
        protected const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";
        private const string IAdminInstance = "<filepath>";

        protected static WindowsDriver<WindowsElement> session;

        [ClassInitialize]
        public static void Setup(TestContext context)
        {
            if (session == null)
            {
                var appiumOptions = new AppiumOptions();



                appiumOptions.AddAdditionalCapability("app",IAdminInstance);

                appiumOptions.AddAdditionalCapability("platformName","windows");

                appiumOptions.AddAdditionalCapability("automationName","windows");
                appiumOptions.AddAdditionalCapability("deviceName","WindowsPC");
                session = new WindowsDriver<WindowsElement>(new System.Uri(WindowsApplicationDriverUrl),appiumOptions);
                
            }
        }

        public static void TearDown()
        {
            // Close the application and delete the session
            if (session != null)
            {
                session.Quit();
                session = null;
            }
        }
        [TestMethod]
        public void Test1()
        {

            var asdf = session.FindElementByWindowsUIAutomation("Memery");
            asdf.Click();
            
            int x = 2;
            Assert.AreEqual(x,2);
          
        }

    }
}
       

这会导致 WinAppDriver 控制台中出现以下内容

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

{"desiredCapabilities":{"app":"D:\\Projects\\gitea\\Kaiser\\Livermore\\KPCommon\\InventoryAdmin\\bin\\Debug\\InventoryAdmin.exe","platformName":"Windows","automationName":"windows","deviceName":"DRAGONITE"},"capabilities":{"firstMatch":[{"platformName":"Windows"}]}}
HTTP/1.1 200 OK
Content-Length: 203
Content-Type: application/json

{"sessionId":"E96DDBBF-F5A1-412E-AF2B-61B4D06CD6DC","status":0,"value":{"app":"D:\\Projects\\gitea\\Kaiser\\Livermore\\KPCommon\\InventoryAdmin\\bin\\Debug\\InventoryAdmin.exe","platformName":"Windows"}}


==========================================
POST /session/E96DDBBF-F5A1-412E-AF2B-61B4D06CD6DC/element HTTP/1.1
Accept: application/json,image/png
Connection: Keep-Alive
Content-Length: 50
Content-Type: application/json; charset=utf-8
Host: 127.0.0.1:4723
User-Agent: selenium/3.141.0 (.net windows)

{"using":"-windows uiautomation","value":"Memery"}
HTTP/1.1 400 Bad Request
Content-Length: 102
Content-Type: application/json

{"status":32,"value":{"error":"invalid selector","message":"Invalid selector: -windows uiautomation"}}

这是我想要的元素的 XAML 代码片段

<Grid Grid.Column="1">
    <ViewBox Stretch="Fill" Width="Auto" Height="35">
        <TextBox HorizontalAlignment="Stretch" VerticalAlignment="Center" 
         AutomationProperties.AutomationId="Memery" x:Name="operatorIDEdit"  MinWidth="175" Width="Auto" 
         TabIndex="0" Margin="0,20,0" GotKeyboardFocus="operatorIDEdit_GotKeyboardFocus" />
    </ViewBox>
</Grid>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...