java应用程序:使用XPath通过部分elementId/UID查找元素
我正在为iOS应用程序进行测试自动化。 我在MacOS(10.15)上使用Appium桌面客户端(1.15.1),并通过Inspector在Iphone 11(13.3)上找到具有以下属性的元素: screenshot from the attributes
的目标是使用appium(6.1.0)和selenium(3.13.0)在java中执行以下操作:
通过elementId
找到这个元素并获得变量值(在本例中为2,6 km)
问题正在到达元素。在Inspector中,accessibility-id
和name
始终等于该值,这意味着我无法用它们定位元素。
{"UID"
属性中的代码从检查器中复制这个elementId
为了本地化元素,我尝试了以下方法:
appiumDriver.findElementByXPath("//*[contains(@id,'45000000-0000-0000')]");
appiumDriver.findElementByXPath("//*[contains(@name,'45000000-0000-0000')]");
appiumDriver.findElementByXPath("//*[contains(@uid,'45000000-0000-0000')]");
appiumDriver.findElementByXPath("//*[contains(@elementId,'45000000-0000-0000')]");
appiumDriver.findElementByXPath("//*[contains(@RuntimeId,'45000000-0000-0000')]");
appiumDriver.findElementByXPath("//*[contains(@ProcessId,'45000000-0000-0000')]");
appiumDriver.findElementByXPath("//*[contains(@class,'45000000-0000-0000')]");
然而,在所有这些试图定位该元素的尝试中,出现了一个org.openqa.selenium.NoSuchElementException
我现在的问题是,我必须在xpath
中写些什么,才能通过检查器的elementId部分(或属性UID)找到元素,然后读取值
# 1 楼答案
我会尝试这个安全选项:
EDIT:contains选项不起作用,因为elementId不是元素的第一个属性
你能试试吗
如果这不起作用,让我们用以下方法来强制: