iOS谓词文本不是在查找元素,而是在appium java中使用Xpath
我不熟悉通过appium Java进行iOS自动化测试。我编写这段代码是为了包含谓词文本。出于某种原因,xpath工作正常,但是当我使用谓词文本时,我没有得到这样的元素异常 我使用的是Eclipse、maven appium 1.7.2,我使用的是ioS模拟器 我的appium服务器是最新版本iOS谓词文本不是在查找元素,而是在appium java中使用Xpath,appium,appium-ios,xcuitest,Appium,Appium Ios,Xcuitest,我不熟悉通过appium Java进行iOS自动化测试。我编写这段代码是为了包含谓词文本。出于某种原因,xpath工作正常,但是当我使用谓词文本时,我没有得到这样的元素异常 我使用的是Eclipse、maven appium 1.7.2,我使用的是ioS模拟器 我的appium服务器是最新版本 protected IOSDriver<IOSElement> driver = null; DesiredCapabilities dc = new DesiredCapabilities
protected IOSDriver<IOSElement> driver = null;
DesiredCapabilities dc = new DesiredCapabilities();
@BeforeMethod
public void setUp() throws MalformedURLException {
dc.setCapability("deviceName", "iPhone X");
dc.setCapability("platformName", "iOS");
dc.setCapability("app", "xxx.app";
dc.setCapability("platformVersion", "12.2");
dc.setCapability("automationName", "XCUITest");
dc.setCapability("useNewWDA", true);
dc.setCapability("fullReset", false);
dc.setCapability("appiumVersion", "1.7.2");
//dc.setCapability("automationName", "XCUITest");
driver = new iOSDriver<>(new URL("http://localhost:4723/wd/hub"), dc);
driver.setLogLevel(Level.INFO);
}
@Test
public void testUntitled() throws InterruptedException {
driver.findElement(By.xpath("//XCUIElementTypeButton[@name='Allow']")).click();
Thread.sleep(10000);
String selector= "type == 'XCUIElementTypeTextField' AND value ==
'Email'";
driver.findElement(MobileBy.iOSNsPredicateString(selector)).sendKeys("gjghhj"); driver.findElement(By.xpath("//XCUIElementTypeTextField[@value='Email']")).sendKeys("dssss");
}
您的谓词可能不正确。考虑使用<代码>名称>代码>代替<代码>值< /代码>
String selector=“type=='xguielementtypetextfield'和name=='Email'代码>
附言。
不能使用Thread.sleep()代码>当您不知道确切的等待时间时。尝试此实用程序功能:
public void waitForExistence(final String predicate) {
for (int attempt = 0; attempt < 10; attempt++) {
try {
driver.findElementByIosNsPredicate(predicate);
break;
} catch (Exception e) {
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
}
}
}
public void waitForExistence(最终字符串谓词){
for(int-trunt=0;trunt<10;trunt++){
试一试{
driver.findelementbyiosspredicate(谓词);
打破
}捕获(例外e){
driver.manage().timeouts().implicitlyWait(1,TimeUnit.SECONDS);
}
}
}
尝试一下类链。()
MobileBy.iOSClassChain(“**/XUIElementTypeTextField[`value=='Email'`]”)如果您使用下面的页面工厂,代码可以正常工作,只需用搜索条件替换“您的文本”
@iOSXCUITFindBy(iOSNsPredicate = "type == 'XCUIElementTypeStaticText' AND name CONTAINS[c] 'Your Text'")
public WebElement myElementUsingiOSNsPredicate;
public void clickOnMyiOSText()
{
myElementUsingiOSNsPredicate.click();
}
带谓词字符串的方法在哪里?我只能看到选择器字符串,没有使用它。我也添加了它。谢谢
@iOSXCUITFindBy(iOSNsPredicate = "type == 'XCUIElementTypeStaticText' AND name CONTAINS[c] 'Your Text'")
public WebElement myElementUsingiOSNsPredicate;
public void clickOnMyiOSText()
{
myElementUsingiOSNsPredicate.click();
}