java - 在 Hybrid 应用程序中,将 Native 切换为 Webview 后,Selector 不起作用
问题描述
我正在运行 Browserstack 应用程序自动化,其中应用程序包含本地上下文以及 Webview.after 切换本地到 webview ,然后我得到了这个异常。webselector 不工作的地方。
try {
driver = new Android Driver<AndroidElement>(new URL(URL), capabilities);
System.out.println("APPIUM driver initiated : " + driver);
((WebDriver) driver).manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS) ;
System.out.println(((AppiumDriver<AndroidElement>) driver).getContext());
((AppiumDriver<AndroidElement>) driver).context("NATIVE_APP");
driver.findElementByAccessibilityId("START NOW").click();
System.out.println("Clicked on Start now");
((AppiumDriver<AndroidElement>) driver).context("WEBVIEW");
System.out.println(((AppiumDriver<AndroidElement>) driver).getContext());
Thread.sleep(3000);
driver.findElement(By.id("'studentLogin_userMailId")).sendKeys("sahfgdfgsdfhsdg@gmail.com");
driver.findElement(By.xpath("studentLoginsubmit")).click();
Thread.sleep(3000);
System.out.println(((AppiumDriver<AndroidElement>) driver).getContext());
}
catch(Exception e) {
e.printStackTrace();
}
finally {
driver.quit();
}
}
enter code here
得到了这个例外:我试图使用 XPATH ID CSS NAME ,仍然面临这个问题。
org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{"method":"id","selector":"'studentLogin_userMailId"}
(会话信息: chrome=89.0.4389.105) (驱动程序信息: chromedriver=89.0.4389.23 (61b08ee2c50024bab004e48d2b1b083cdbdac579-refs/branch-heads/4389@{#294}),platform=Linux 4.1.13-101.fc86641.x86_64) (警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:0 毫秒有关此错误的文档,请访问:https ://www.seleniumhq.org/exceptions/no_such_element.html 构建信息:版本:'3.141.59',修订:'e82be7d358',时间:'2018-11-14T08:25:48' 系统信息:主机:'DESKTOP-CROVB78',ip:'192.168.43.130',os .name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '15.0.2' 驱动信息: io.appium.java_client.android.AndroidDriver Capabilities {64bit: false ,acceptSslCert:假,acceptSslCerts:假,adbExecTimeout:120000,appActivity:com.englishhelper.readtome ....,appPackage:com.....,appUrl:bs:// ...,autoWebview:真,自动化名称: UiAutomator2,browserstack.appium_version:1.17.0,browserstack.is_hub_canary:false,browserstack.minOSVersion:6.0,buildName:RTM,bundleID:com.ereadtome ....,bundleId:coe ....,chromeOptions:{w3c:false }, chromedriverPort: 18084, chromedriverPorts: [[18144, 18154]],databaseEnabled: false, detected_language: selenium/3.141.59 (java win..., device: google pixel 3, deviceApiLevel: 29, deviceManufacturer: Google, deviceModel: Pixel 3, deviceName: 8BMX1CPET, deviceOrientation: potrait, deviceScreenDensity: 440, deviceScreenSize : 1080x2160, deviceUDID: 8BMX1CPET, enablePerformanceLogging: false, javascriptEnabled: true, locationContextEnabled: false, mobile: {browser: mobile, version: Google Pixel 3-10.0}, nativeWebScreenshot: true, networkConnectionEnabled: true, newCommandTimeout: 0, new_bucketing: true ,orig_os:android,pixelRatio:2.75,平台:ANDROID,platformName:Android,platformVersion:10,realMobile:true,real_mobile:true,skipServerInstallation:true,statBarHeight:66,systemPort:8204,takeScreenshot:true,udid:8BMX1CPET,uiautomator2ServerLaunchTimeout : 60000, 版本: , viewportRect:{高度:1962,左侧:0,顶部:66,宽度:1080},警告:{},webStorageEnabled:false} 会话 ID:bd62fbded6c4165b7b54ba80b5e6f2c950d5c2e9 *** 元素信息:{Using=id, value='studentLogin_userMailId} at java。 base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) 在 java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) 在 java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) 在org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166) 在 org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80) 在 org.openqa 的 org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40) .selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor .java:239) 在 io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41) 在 io.appium.java_client.AppiumDriver 的 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)。在 org.openqa.selenium.remote 的 io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 处执行(AppiumDriver.java:1)。RemoteWebDriver.findElement(RemoteWebDriver.java:323) 在 io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:61) 在 io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1) 在 io.appium.java
_client.android.AndroidDriver.findElement(AndroidDriver.java:1)
at
org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:372) 在 io.appium.java_client.DefaultGenericMobileDriver.findElementById(DefaultGenericMobileDriver.java:69) 在 io.appium.java_client.AppiumDriver.findElementById(AppiumDriver.java: 1) 在 io.appium.java_client.android.AndroidDriver.findElementById(AndroidDriver.java:1) 在 org.openqa.selenium.By$ById.findElement(By.java:188) 在 org.openqa.selenium.remote.RemoteWebDriver .findElement(RemoteWebDriver.java:315) 在 io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1) 在 io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:57) 在 io.appium.java_client。 android.AndroidDriver.findElement(AndroidDriver.java:1) 在 Testing.NewAppLaunch.main(NewAppLaunch.java:47)
解决方案
推荐阅读
- javascript - 如何将 Angular 2 Frontend Express JS 变量导出到 Angular 2 组件?
- c# - 在 asp.net core 中为 TempData 对象添加扩展方法
- eclipse - 是否可以找出用 Eclipse 编辑器编写的代码是否有效并相应地禁用/启用上下文菜单按钮?
- android - Firebase Auth 在 android stuio 中使应用程序崩溃
- ios - 我可以对具有不同捆绑 ID 的两个 iOS 应用使用相同的 Firebase GoogleService-Info.plist 吗?
- python - 如何使用 tensorflow 加速频谱图计算?
- solr - 如何使用 Solr 复制字段
- mysql - 数据库触发器如何将值的总和从一个表插入到另一个表?
- reactjs - Redux 状态的变化未反映在组件中
- c++ - 为什么你应该使用 unsigned int 而不是 unsigned?