Appium NoSuchElementException:使用给定的搜索参数在页面上找不到元素
我使用的代码:Appium NoSuchElementException:使用给定的搜索参数在页面上找不到元素,appium,hybrid-mobile-app,appium-ios,Appium,Hybrid Mobile App,Appium Ios,我使用的代码: public class SafariTest { private static IOSDriver iOSDriver; private WebElement loginSettingsButton; @Before public void preTest() throws MalformedURLException { DesiredCapabilities capabilities = new DesiredCapabilities(); capabili
public class SafariTest {
private static IOSDriver iOSDriver;
private WebElement loginSettingsButton;
@Before
public void preTest() throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "xxxx");
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "12.1");
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "XCUITest");
capabilities.setCapability(MobileCapabilityType.UDID, "xxxx");
capabilities.setCapability(MobileCapabilityType.APP,"/xxx.app");
iOSDriver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
//webDriver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
@Test
public void testCase(){
WebDriverWait wait = new WebDriverWait(iOSDriver, 15);
loginSettingsButton = iOSDriver.findElement(By.name("loginSettingsButton"));
loginSettingsButton.click();
}
@After
public void finishTest(){
// webDriver.quit();
}
public static void setContextToWebview(){
Set<String> availableContexts = iOSDriver.getContextHandles();
availableContexts.stream()
.filter(context -> context.toLowerCase().contains("webview"))
.forEach(newcontext -> iOSDriver.context(newcontext));
}
}
公共类SafariTest{
专用静态IOSDriver;
私有WebElement登录设置按钮;
@以前
public void preTest()引发错误的DurLexException{
DesiredCapabilities=新的DesiredCapabilities();
能力.setCapability(MobileCapabilityType.DEVICE_NAME,“xxxx”);
能力.setCapability(MobileCapabilityType.PLATFORM_NAME,“iOS”);
能力。设置能力(MobileCapabilityType.PLATFORM_版本,“12.1”);
能力.setCapability(mobileCababilityType.AUTOMATION_NAME,“XUITest”);
能力.setCapability(MobileCapabilityType.UDID,“xxxx”);
capabilities.setCapability(MobileCapabilityType.APP,“/xxx.APP”);
iOSDriver=新iOSDriver(新URL(“http://127.0.0.1:4723/wd/hub(能力),;
//webDriver=新的AppiumDriver(新的URL(“http://127.0.0.1:4723/wd/hub(能力),;
}
@试验
公共无效测试用例(){
WebDriverWait wait=新的WebDriverWait(iOSDriver,15);
loginSettingsButton=iOSDriver.findElement(By.name(“loginSettingsButton”);
登录设置按钮。单击();
}
@之后
公共void finishTest(){
//webDriver.quit();
}
公共静态无效setContextToWebview(){
设置availableContexts=iOSDriver.getContextHandles();
availableContexts.stream()
.filter(context->context.toLowerCase().contains(“webview”))
.forEach(newcontext->iOSDriver.context(newcontext));
}
}
我得到的错误是:
org.openqa.selenium.NoSuchElementException:使用给定的搜索参数在页面上找不到元素。
有关此错误的文档,请访问:
构建信息:版本:“3.141.59”,修订版:“e82be7d358”,时间:“2018-11-14T08:17:03”
系统信息:主机:'xxxx.local',ip:'xxxxx',os.name:'Mac os X',os.arch:'x86_64',os.version:'10.14.4',java.version:'1.8.0_152-release'
驱动程序信息:io.appium.java_client.ios.IOSDriver
功能{app:xxx,automationName:xguitest,browserName:,databaseEnabled:false,deviceName:xxxx,javascriptEnabled:true,locationContextEnabled:false,networkConnectionEnabled:false,platform:MAC,platformName:iOS,platformVersion:12.1,takesScreenshot:true,udid:xxxx…,webStorageEnabled:false}
会话ID:a2b7627f-9792-4df3-874b-96CED13C185
***元素信息:{Using=name,value=loginSettingsButton}
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
位于org.openqa.selenium.remote.http.w3chttprosecodec.createException(w3chttprosecodec.java:187)
在org.openqa.selenium.remote.http.w3chttrpresponsecodec.decode(w3chttrpresponsecodec.java:122)
位于org.openqa.selenium.remote.http.w3chttprosecodec.decode(w3chttprosecodec.java:49)
位于org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
在io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239)
位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
在io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
在io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
位于io.appium.java_client.ios.IOSDriver.execute(IOSDriver.java:1)
位于org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:323)
位于io.appium.java_client.DefaultGenericMobileDriver.findelelement(DefaultGenericMobileDriver.java:62)
位于io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1)
位于io.appium.java_client.ios.IOSDriver.findElement(IOSDriver.java:1)
位于org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:404)
位于io.appium.java_client.DefaultGenericMobileDriver.findElementByName(DefaultGenericMobileDriver.java:118)
位于io.appium.java_client.AppiumDriver.findElementByName(AppiumDriver.java:1)
位于io.appium.java_client.ios.IOSDriver.findElementByName(IOSDriver.java:1)
位于org.openqa.selenium.By$ByName.findElement(By.java:284)
位于org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:315)
位于io.appium.java_client.DefaultGenericMobileDriver.findelelement(DefaultGenericMobileDriver.java:58)
位于io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1)
位于io.appium.java_client.ios.IOSDriver.findElement(IOSDriver.java:1)
位于com.example.appiumapplication.SafariTest.testCase(SafariTest.java:63)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.junit.runners.model.FrameworkMethod$1.runReflectVeCall(FrameworkMethod.java:50)
位于org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
位于org.junit.runners.model.FrameworkMethod.invokeeexplosive(FrameworkMethod.java:47)
位于org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
位于org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
位于org.junit.internal.runners.statements.runafter.evaluate(runafter.java:27)
位于org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
位于org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
位于org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
在org.junit.runners.ParentRunner
loginSettingsButton = iOSDriver.findElementByAccessibiltyId("loginSettingsButton");