一、App定位元素
1、通过ID定位元素,对应【resource-id】属性
driver.findElementById(“me.ele:id/w0”);
2、通过Name定位元素,对应【text】属性
driver.findElementByName(“外卖”);
3、通过ClassName定位元素,对应【class】属性
driver.findElementsByClassName(“android.widget.TextView”);
4、通过Xpath定位元素,对应【xpath】属性
driver.findElementByXPath(“//android.widget.Button[@index=’1’]”);
5、通过AccessibilityId定位元素,对应【content-desc】属性
driver.findElementByAccessibilityId(“我的”);
6、通过AndroidUiAutomator定位元素
driver.findElementByAndroidUIAutomator(“new UiSelector().text(\”Add note\”)”);
driver.findElementByAndroidUIAutomator(“new UiSelector().resourceId(\”com.tencent.mm:id/do\”)”);
7、通过driver.getPageSource()打印页面元素
二、WebApp定位元素
1、 chrome toggle device mode 模式
打开PC chrome浏览器,点击F12
点击toggle device mode,F5刷新就可以了。在这里可以切换设备型号及屏幕的大小。
三、混合App定位元素
混合应用是原生APP+webview组成的,可以简单的理解为一个原生app的外壳,内部全是html页面。在WebView类中调用静态方法setWebContentsDebuggingEnabled,如下:
if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
//这里使用driver.getContextHandles();获取app的handles,原生应用会有一个handle,webview也会有一个handle
Set<String> contexts = driver.getContextHandles();
for(String cotext:contexts) {
System.out.println(context);
//会打印出 NATIVE_APP(原生app handle)和WEBVIEW_com.example.testapp(webview的 handle)
}
//进入webview中
driver.context((String) contexts.toArray()[1]);
//操作webview中的内容