首页 > 解决方案 > Appium 桌面记录器使用 Xpath 而不是 Id

问题描述

我正在使用 Appium DeskTop 探索我的本机应用程序。对于输入字段,Appium Desktop 在“按选择器窗口查找”中显示了一个 Id 和一个 XPath 表达式。

当我将 Sendkeys 操作记录到此输入字段时,Appium DeskTop 在记录器窗口中显示 XPath 表达式用于定位元素而不是 Id。这不是我所期望的,我期望 Id 用于定位元素。

我尝试在我的测试程序中使用 Id 来定位元素,这是给出的,当显式等待元素的可见性时,请参阅下面的 C# 代码:

wait.Until(ExpectedConditions.ElementIsVisible(By.Id("companyname")));
IWebElement bedrijf = (IWebElement)driver.FindElementById("companyname");
bedrijf.Click();
bedrijf.SendKeys("IBM");

然后出现以下异常:

OpenQA.Selenium.NoSuchElementException

什么样的 ID 在这里展示 Appium Desktop?

在此处输入图像描述

标签: appiumappium-androidnosuchelementexceptionappium-desktop

解决方案


您需要使用资源 ID。对于原生 android 应用程序,通常使用 id 属性作为resource-id

IWebElement bedrijf = (IWebElement)driver.findElement(By.xpath("//android.widget.EditText[@resource-id='companyname']"))

推荐阅读