如何使用Selenium和Java在iOS应用程序中使用数据测试id

如何使用Selenium和Java在iOS应用程序中使用数据测试id,java,selenium,appium-ios,pega,Java,Selenium,Appium Ios,Pega,我正在尝试自动化一个使用Pega PRPC构建的iOS应用程序。但是我找不到一些元素 下面是appium中的元素部分 下面是我用来表示该元素的代码 private IOSDriver<MobileElement> driver; URL url = new URL(configFileReader.getAppiumUrl()); driver = new IOSDriver<MobileElement>(url, cap); MobileElement enter

我正在尝试自动化一个使用Pega PRPC构建的iOS应用程序。但是我找不到一些元素

下面是appium中的元素部分

下面是我用来表示该元素的代码

private IOSDriver<MobileElement> driver;
URL url = new URL(configFileReader.getAppiumUrl());
driver = new IOSDriver<MobileElement>(url, cap);


MobileElement enterValueToHeadOnWeir = driver.findElementByClassName("XCUIElementTypeTextField");
enterValueToHeadOnWeir.sendKeys(configFileReader.getHeadOnWeirValue());
专用IOSDriver;
URL URL=新URL(configFileReader.getAppiumUrl());
驱动程序=新的IOSDriver(url,cap);
MobileElement enterValueToHeadOnWeir=driver.findElementByClassName(“XguiElementTypeTextField”);
enterValueToHeadOnWeir.sendKeys(configFileReader.getHeadOnWeirValue());
通过上面的代码,我能够获得元素。但是在同一个屏幕中,我在文本字段上使用了相同的类名,并且没有任何唯一的标识符。对于第一个元素,这将起作用,但我无法处理其他文本字段


由于这是一个PEGA应用程序,我有这些元素的“数据测试id”属性,我能否将其用于Appium?

如果您有多个具有相同特定属性的元素,您可以使用
将它们收集到列表中。findelementsBy*

List<MobileElement> enterValueToHeadOnWeir = driver.findElementsByClassName("XCUIElementTypeTextField");

//example to second element
enterValueToHeadOnWeir.get(1).sendKeys(configFileReader.getHeadOnWeirValue());

如果有多个元素具有相同的特定属性,则可以使用
.findelementsBy*
在列表中收集它们:

List<MobileElement> enterValueToHeadOnWeir = driver.findElementsByClassName("XCUIElementTypeTextField");

//example to second element
enterValueToHeadOnWeir.get(1).sendKeys(configFileReader.getHeadOnWeirValue());

我使用了下面带有数据测试id的代码,它给了我“NoSuchElementException”MobileElement enterValueToHeadOnWeir=driver.findElementByXPath(//input[contains(@data test id,'HeadOnWeir'))”@cindy87对于上面的图片,您没有
数据测试id
属性。请按照回答中的
xpath
,输入正确的id号来更改
在此处输入值。\u
。我们还有一个此应用程序的web视图,当我从浏览器检查元素时,它显示数据测试id属性。要使用此属性,它是否也需要在appium inspector中显示?@cindy87如果在appium inspector中看不到该属性,则无法使用它。elementId不是静态的,它会不断更改,因为我使用了列表方法。非常感谢,它现在工作正常。我使用了下面带有数据测试id的代码,它给了我“NoTouchElementException”MobileElement enterValueToHeadOnWeir=driver.findElementByXPath(//input[contains(@data test id,'HeadOnWeir'))@cindy87对于上面的图片,您没有
数据测试id
属性。请按照回答中的
xpath
,输入正确的id号来更改
在此处输入值。\u
。我们还有一个此应用程序的web视图,当我从浏览器检查元素时,它显示数据测试id属性。要使用此属性,它是否也需要在appium inspector中显示?@cindy87如果在appium inspector中看不到该属性,则无法使用它。elementId不是静态的,它会不断更改,因为我使用了列表方法。非常感谢,现在很好。