appium 爬虫可以用来爬手机东西吗

1、按键操作
pressKeyCode(key, metastate)
key为按键事件,为辅助功能键
pressKeyCode(AndroidKeyCode.HOME) &&&&&&&&&&&&&&&&按键
pressKeyCode(AndroidKeyCode.KEYCODE_A, 1) &按键
2、锁屏操作
lockScreen(seconds):屏幕几秒后锁屏
isLocked():判断屏幕是否锁屏,返回布尔类型,锁屏为
3、打开通知栏
openNotifications()
4、屏幕滚动
scrollTo(text):滚动到某个属性为指定的字符串的控件
scrollToExact(text):滚动到某个属性包含传入的字符串的控件
5、获取网络状态
getNetworkConnection().value :返回一个整型
6、设置网络状态
setNetworkConnection(connection)
setNetworkConnection(new NetworkConnectionSetting(1));//飞行模式
setNetworkConnection(new NetworkConnectionSetting(true, false, false))//飞行模式
7、截取屏幕
getScreenshotAs(outputType)
File screen = driver.getScreenshotAs(OutputType.FILE);
File screenFile = new File("d:\\screen.png");
FileUtils.copyFile(screen, screenFile); //commons-io-2.0.1.jar中的
} catch (IOException e) {
e.printStackTrace();
8、横竖屏设置
rotate(orientation):设置屏幕横屏或者竖屏 &&横向或 纵向
getOrientation():获取当前屏幕的方向
driver.rotate(ScreenOrientation.LANDSCAPE); &设置屏幕为横屏
9、上传下载文件
pullFile(remotePath):上传文件
driver.pullFile(remotePath):下载文件
pullFolder(remotePath):下载文件夹
上传文件举例:
File file = new File("c:\\appium.log");
String content =
content = FileUtils.readFileToString(file);
} catch (IOException e) {
e.printStackTrace();
byte[] data = Base64.encodeBase64(content.getBytes());
driver.pushFile("sdcard/appium.log", data);
下载文件举例:
byte[] resultDate = driver.pullFile("sdcard/appium.log");
System.out.println(new String(Base64.decodeBase64(resultDate)));
下载文件夹举例:
driver.pullFolder("tmp/"); &把的目录拷贝到临时文件夹
10、屏幕元素点击
tap(fingers, element, duration):点击控件中心点按下,毫秒秒后松开,如此重复次
11、屏幕坐标点击
tap(fingers, x, y, duration):点击,坐标按下,毫秒秒后松开,如此重复次
元素的x,y坐标如何获取,利用获取元素的值,然后在范围内取值,如下示例:
一个button的坐标是
x的取值范围是,的取值范围是
12、根据坐标滑动
swipe(startx, starty, endx, endy, duration):从滑到(),分步滑,每一步用时是毫秒。
坐标获取方式:
a)手机开发者选项指针位置 &
File screen = driver.getScreenshotAs(OutputType.FILE);
BufferedImage bufferedImage = ImageIO.read(screen);
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
System.out.println("width:"+width+"height:"+height);
driver.swipe(width/2,height*3/4, width/2,height/4, 1000);
} catch (IOException e) {
e.printStackTrace();
备注:获取手机屏幕的大小,然后再实现滑动。
阅读(...) 评论()自动化测试工具(3)
由于Android的模拟器不是很好用,我建议直接从手机开始执行测试脚本。
准备工作如下:
一台Android手机,我的机器是Android6.0版本。
开启设备的usb调试,可以开启开发者选项,再确认是否打开,记得一定要在手机端授权电脑的连接,如果没看到这个提示,建议重新插拔手机再试一下。
通过adb查找设备的uid,命令是adb devices,那一串数字就是设备的uid,最好只连一个设备。
运行测试用例失败
有几种可能导致运行测试用例失败:
Appium环境错误,可以通过运行node appium-doctor.js来检查环境。
Appium上一个测试进程还没有退出,重启服务就可以解决。
adb无法正常连接,可能是第三方手机助手占用了adb的端口。
脚本中有关主机地址的信息错误,需要根据自己在Appium中设置的主机地址来修改。
脚本中有关应用的包名和Activity名错误,获取正确包名和Activity名的方法有两种:
1 通过aapt dump badging查看apk文件。
2 通过adb shell “dumpsys window | grep mCurrentFocus”查看手机上当前正在显示的应用相关信息。
启动Appium服务
可以通过命令行启动,也可以通过应用图标启动,通过命令行可以将测试过程集成到自动编译环境中去,具体命令如下:
node appium.js --session-override
如果只是为了调试,可以直接通过应用图标启动。
启动Appium服务的GUI界面后,点击第一个图标,需要设置一些信息,找到capability,输入手机设备相关的信息;找到advanced,输入android SDK的路径。
准备测试脚本
准备一个文本文件test,输入下面的内容:
from appium import webdriver
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '6.0'
desired_caps['deviceName'] = 'NB'
desired_caps['appPackage'] = 'com.android.calculator2'
desired_caps['appActivity'] = '.Calculator'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
driver.find_element_by_name("1").click()
driver.find_element_by_name("5").click()
driver.find_element_by_name("9").click()
driver.find_element_by_name("9").click()
driver.find_element_by_name("5").click()
driver.find_element_by_name("+").click()
driver.find_element_by_name("6").click()
driver.find_element_by_name("=").click()
driver.quit()
将文件后缀改为py。这个文件“test.py”就是后续将在手机测运行的测试脚本。
执行测试脚本
在test.py文件路径下打开命令后,执行python test.py,可以看到手机端会自动启动计算器,点击数字执行一系列操作。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1577次
排名:千里之外拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(db43cb-ua98).
重新安装浏览器,或使用别的浏览器新手求解,appium如何判断手机app的一个提示框中的内容是否正确? - 知乎4被浏览1233分享邀请回答03 条评论分享收藏感谢收起sina.lt/eRYC0添加评论分享收藏感谢收起

我要回帖

更多关于 appium手机自动化测试 的文章

 

随机推荐