如何在ios中找到元素的子元素?

问题描述 投票:2回答:1

我不能得到孩子的元素。

我可以使用appium inspector在childNameTV元素下看到childNameLabel元素

例如,我尝试查找第一个子元素的文本;

List<WebElement> webElements = driver.findElements(By.id("childNameTV"));
webElements.get(0).findElement(By.id("childNameLabel")).getText();

enter image description here

然后我得到这个错误;

org.openqa.selenium.NoSuchElementException:使用给定的搜索参数无法在页面上找到元素。 (警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:7.45秒有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html构建信息:版本:'3.0.1',修订版:'1969d75',时间:'2016 -10-18 09:49:13 -0700'系统信息:主机:'cihangir-macbook.local',ip:'10 .125.0.57',os.name:'Mac OS X',os.arch:'x86_64' ,os.version:'10 .13.3',java.version:'1.8.0_131'驱动程序信息:com.xamarin.testcloud.appium.EnhancedIOSDriver功能[{app = / Users / cihangirtuna / mobile_app_automation_appium / app / iOS / morhipo。 app,networkConnectionEnabled = false,databaseEnabled = false,deviceName = iPhone 6s Plus,xcodeSigningId = iPhone Developer,platform = MAC,waitForQuiescence = false,platformVersion = 11.2,webStorageEnabled = false,locationContextEnabled = false,automationName = XCUITest,browserName =,takesScreenshot = true,javascriptEnabled = true,platformName = iOS,udid = 303257C6-5EE7-410F-87E2-466E3716265C,autoAcceptAlerts = true}]会话ID:b522404b-4e02-4d4b-a0c9-2b5ffa1b6d51

---元素信息:{using = id,value = childNameLabel} at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)位于org.openqa.selenium的org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216)的java.lang.reflect.Constructor.newInstance(Constructor.java:423)中。位于io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:43)的org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:635)上的remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168) .appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)ato.appium.java_client.ios.IOSDriver.execute(IOSDriver.java:1)at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java) :274)在io.appium.java_client.DefaultGenericMobileEleme nt.execute(DefaultGenericMobileElement.java:37)ato.appium.java_client.MobileElement.execute(MobileElement.java:1)ato.appium.java_client.ios.IOSElement.execute(IOSElement.java:1)atg.openqa .selenium.remote.RemoteWebElement.findElement(RemoteWebElement.java:177)atg.openqa.selenium.remote.RemoteWebElement.findElementById(RemoteWebElement.java:210)at io.appium.java_client.DefaultGenericMobileElement.findElementById(DefaultGenericMobileElement.java:53 )ato.appium.java_client.MobileElement.findElementById(MobileElement.java:1)ato.appium.java_client.ios.IOSElement.findElementById(IOSElement.java:1)at org.openqa.selenium.By $ ById.findElement( By.java:218)oro.appnqa.selenium.remote.RemoteWebElement.findElement(RemoteWebElement.java:173)位于io.appium.java_client.MobileElement的io.appium.java_client.DefaultGenericMobileElement.findElement(DefaultGenericMobileElement.java:45) io.appium.java_client.ios.IOSElement.findElement(IOSElement.ja)中的.findElement(MobileElement.java:1) va:1)at pages.NewSeasonPage.tabSeasonSubCategory(NewSeasonPage.java:43)at the.S.TestTest.testSortPageOpenWithoutLogin(SortTest.java:31)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)atg.junit.runners.model.FrameworkMethod $ 1的java.lang.reflect.Method.invoke(Method.java:498)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) .runReflectiveCall(FrameworkMethod.java:45)org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)atg.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)at在org.junit.internal.runners的org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)上的org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)。语句.RunAfters.evaluate(RunAfters.java:30)org.junit.rules.TestWatcher $ 1.evaluate(TestWatcher.java:47)org.j unit.rules.RunRules.evaluate(RunRules.java:18)org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)atg.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)at org org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:60)上的org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:231)中的.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) )org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:50)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner。 java:222)在org.eclipse.jdt的org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)的org.junit.runners.ParentRunner.run(ParentRunner.java:300)位于org.eclipse.jdt.internal.junit的org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)的.internal.junit.runner.TestExecution.run(TestExecution.java:38) .runner.RemoteTestR unner.runTests(RemoteTestRunner.java:678)位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main的org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) RemoteTestRunner.java:192)

ios testing automation appium
1个回答
2
投票

“childNameLabel”是标记为“name”的属性,而不是ID。

我怀疑以下内容适合您:

webElements.get(0).findElement(By.xpath("//XCUIElementTypeStaticText[@name=\"childNameLabel\"]")).getText();
© www.soinside.com 2019 - 2024. All rights reserved.