当前位置:   article > 正文

Appium初体验_appium 自动化快手

appium 自动化快手

偶然接触到这个自动化测试工具,现记录一下使用过程,另外我没有安卓真机,先用的genymotion模拟器,觉得夜神模拟器更加方便一点

提供一部分安装包给大家,方便大家下载

链接:https://pan.baidu.com/s/1MdSD14KGH_NU8n3cRrzknw
提取码:cu5y

1前置工作

1.1安装并配置Android sdk环境

1.2安装Pycharm

1.3安装配置JAVA JRE

使用的过程中一直报错:找不到JAVA_HOME,所以也就索性重装一了一遍,安装包见前面百度云链接

JAVA_HOME

C:\Program Files\Java\jre1.8.0_261

CLASSPATH

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

Path

%JAVA_HOME%\jre\bin;%JAVA_HOME%\bin;

另外记住把java bin的变量值放在path前面一点

1.4.安装Appium Desktop

记得一定要点第一个,我第一次点的第二个,各种错误,重装后选第一个才能正常使用

1.5.安装夜神模拟器

注意将安装路径加入到Path变量中,比如我的安装目录是E:\learn\Nox\bin

则在path中加上

然后将;%ANDROID_HOME%\platform-tools文件夹下的里面的adb.exe重命名为nox_adb.exe,复制到上面对应的目录E:\learn\Nox\bin,如果找不到可以试试我百度云链接里面的nox_adb.exe。

 

2执行顺序

打开夜神模拟器,我们先安装BILIBILI软件

然后打开Appium

 

直接点击“启动服务器v1.15.1”,弹出如下界面

然后打开命令提示符,输入nox_adb connect 127.0.0.1:62001

接着在pycharm中执行代码,源代码参见Appium 自动化的打开 B站 应用

执行完后,效果如下

这时你可以点开Appium界面的放大镜

添加名称,也就是desired_caps对应的内容

  1. {
  2. 'platformName': 'Android',
  3. 'deviceName': '127.0.0.1:62001',
  4. 'appPackage': 'tv.danmaku.bili',
  5. 'appActivity': '.ui.splash.SplashActivity',
  6. }

得到最后的调试画面

放大镜可以录制动作并转化成代码

2测试快手APP

2.1启动快手

回顾一下我们如何使用appium-client启动夜神模拟器中的应用

1我们需要开启Appium服务,端口号设置为4723

2开启夜神模拟器,

3使用nox_adb命令,连接模拟器的ip+端口

4在pycharm连接Appium服务器,发送指令给Appium,Appium再控制手机

第三步的nox_adb,我们的命令是nox_adb connect 127.0.0.1:62001,为什么夜神模拟器的ip是127.0.0.1,端口号62001又是怎么来的呢。62001是夜深模拟器的默认端口,我们看看对不对

先在任务管理器找到夜神模拟器的

可以看到noxvmsvhandle对应的PID是10664

打开命令提示符,输入netstat -aon

然后查找10664

夜神模拟器确实用了62001这个端口

第四步中,我们的代码出现了

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

因为pycharm利用appium-client连接了4723端口对应的appium服务器。

最后回到我们的代码中来

启动快手APP,只用了下面9行代码(前提是在模拟器中首先安装了快手)

  1. from appium import webdriver
  2. desired_caps = {
  3. 'platformName': 'Android', # 被测手机是安卓
  4. 'platformVersion': '5.1.1', # 手机安卓版本
  5. 'deviceName': '0.0.0.0:62001', # 设备名,安卓手机可以随意填写
  6. 'appPackage': 'com.smile.gifmaker', # 启动APP Package名称
  7. 'appActivity': 'com.yxcorp.gifshow.HomeActivity', # 启动Activity名称
  8. }
  9. driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

platformName就是测试平台

platformVersion是安卓版本,可以看到我的模拟器版本确实是5.1.1

deviceName是设备名称,安卓可以随便写

重点是appPackage和appActivity,前者是包名,区别不同的应用,后者对应的是哪个界面,那么这两个值是怎么来的呢,这里我给出一个方法

首先打开模拟器中的快手

然后在命令提示符中输入:adb shell dumpsys window windows | findstr mFocusedApp

得出包名和界面名

2.2在应用中启动别的应用

先启动快手,再启动哔哩哔哩,可以使用start_activity方法

  1. from appium import webdriver
  2. import time
  3. desired_caps = {
  4. 'platformName': 'Android', # 被测手机是安卓
  5. 'platformVersion': '5.1.1', # 手机安卓版本
  6. 'deviceName': '0.0.0.0:62001', # 设备名,安卓手机可以随意填写
  7. 'appPackage': 'com.smile.gifmaker', # 启动APP Package名称
  8. 'appActivity': 'com.yxcorp.gifshow.HomeActivity', # 启动Activity名称
  9. }
  10. driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
  11. time.sleep(3)
  12. driver.start_activity("tv.danmaku.bili",".ui.splash.SplashActivity")
  13. time.sleep(3)
  14. driver.quit()

可以打印正在运行的包名和页面名称

print(driver.current_package,driver.current_activity)

2.3关闭应用

driver.close_app()

2.4切合后台

driver.background_app(s)

2.5找到元素

home_button = driver.find_element_by_id("com.smile.gifmaker:id/left_btn")

2.6事件

点击:home_button.click()

输入:home_button.send_keys('123456')

清除:home_button.clear()

滑动:swipe/scroll/drag_and_drop

2.7等待

user= wait.until(lambda x: x.find_element_by_id("com.smile.gifmaker:id/name"))
user.click()

3实战

我们在快手拉黑一个人,是不是先打开APP,然后搜素该用户,最后拉黑。前面的找到元素

home_button = driver.find_element_by_id("com.smile.gifmaker:id/left_btn") ,这个括号里的参数是怎么获取的呢

如果你能成功的运行“启动快手APP”这一步,则你需要的只是一个uiautomatorviewer

该文件在AndroidStudioSdk\tools\bin下。点击uiautomatorviewer.bat,如下

然后在我们的夜神模拟器中打开快手,停在搜索页面,点击工具栏第二个图标,然后鼠标点击到这个搜索框,下面的resource-id的值就是我们需要找的内容

最后附完整代码

  1. from appium import webdriver
  2. from selenium.webdriver.support.wait import WebDriverWait
  3. desired_caps = {
  4. 'platformName': 'Android', # 被测手机是安卓
  5. 'platformVersion': '5.1.1', # 手机安卓版本
  6. 'deviceName': '0.0.0.0:62001', # 设备名,安卓手机可以随意填写
  7. 'appPackage': 'com.smile.gifmaker', # 启动APP Package名称
  8. 'appActivity': 'com.yxcorp.gifshow.HomeActivity', # 启动Activity名称
  9. 'noReset': True, # 不要重置App
  10. 'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
  11. 'resetKeyboard': True, # 执行完程序恢复原来输入法
  12. 'automationName': 'UiAutomator1'
  13. }
  14. driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
  15. home_button = driver.find_element_by_id("com.smile.gifmaker:id/left_btn") # 进入home
  16. home_button.click()
  17. tab_search = driver.find_element_by_id("com.smile.gifmaker:id/tab_search") # 点击查找
  18. tab_search.click()
  19. wait = WebDriverWait(driver, 5, poll_frequency=1)
  20. hint = wait.until(lambda x: x.find_element_by_id("com.smile.gifmaker:id/inside_editor_hint"))
  21. hint.click()
  22. search_box = driver.find_element_by_id("com.smile.gifmaker:id/editor")
  23. search_box.send_keys("572198786") # 设置查询内容
  24. driver.find_element_by_id("com.smile.gifmaker:id/right_tv").click(); # 点击搜素
  25. #出现滑块,等后退
  26. driver.find_element_by_id("com.smile.gifmaker:id/left_btn").click(); # 后退
  27. driver.find_element_by_xpath("//*[@text='用户']").click()
  28. user= wait.until(lambda x: x.find_element_by_id("com.smile.gifmaker:id/name"))
  29. user.click()
  30. send_message= wait.until(lambda x: x.find_element_by_id("com.smile.gifmaker:id/send_message"))
  31. send_message.click()
  32. user_info= wait.until(lambda x: x.find_element_by_id("com.smile.gifmaker:id/right_btn"))
  33. user_info.click()
  34. add_black_btn= wait.until(lambda x: x.find_element_by_id("com.smile.gifmaker:id/add_black_btn"))
  35. add_black_btn.click()
  36. confirm= wait.until(lambda x: x.find_element_by_id("com.smile.gifmaker:id/qlist_alert_dialog_item_text"))
  37. confirm.click()
  38. driver.close_app()
  39. driver.quit()

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/382389
推荐阅读
相关标签
  

闽ICP备14008679号