appium集成了webdriver && uiautomator
首先获取该app类型 nativeapp/webapp/hybridapp
driver.getContextHandles() //查看该app的类型 native_app 、webview 、两者都有
原声app用uiautomator,webview用webview
nativeapp 的webview需要打开debug模式时才能有nativeapp转化为hybridapp(WebView.setWebContentsDebuggingEnabled(true);
)
webview 可以使用byxpath
uiautomator 可以使用findElementByAndroidUIAutomator
使用webview 时驱动类型需要是webview型,uiautomator需要是NATIVE_APP型
获取驱动类型driver.getContext()
更改驱动类型:driver.context("NATIVE_APP");
1、webdriver
xpathorg.openqa.selenium.By 利用selenium的获取控件方式
driver.findElement(By.xpath("//div[@class='pet_zan_more']/span)).getAttribute("innerHTML");
.// 当前节点下的自己点
// 在节点下循环查找
/ 文档根节点
调试方法:在浏览器console中查找元素
//查找document下的button节点,顺序放回list
document.evaluate("//button",document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null)
//查找document下的第一个button按钮(document中的按钮编号从1开始)
document.evaluate("//button[1]",document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null)
结果中的snapshotLength代表查找到的节点长度
查找evaluate结果类型:http://www.w3school.com.cn/xmldom/dom_xpathresult.asp(也可以用数据代指,数字从0开始编号)
2、UIAutomator
AndroidSDK中的uiautomator.jar包中包含UiSelector的控件识别方法
uiautomator -> driver.findElementByAndroidUIAutomator 利用uiautomator的api查找元素
:driver.findElementByAndroidUIAutomator("new UiSelector().description(\" uiautomator\")")
UIdevices
UISelector -> 返回UIObject
3、直接调用javascript
AndroidDriver继承的appiumDriver继承的DefaultGenericMobileDriver继承了RemoteWebDriver,这个方法实现了接口JavascriptExecutor的executeScript方法,可以执行js脚本。
JavascriptExecutor js = driver;
Object scriObject = js.executeScript("alert(\"test\")");