相信很多新手跟我一样,在安装Java跟SDK 环境上花了很多时间,在终端显示配置信息没出错,但是跑代码的时候就是起不来,总结一下几点: 一、缺少.jar文件,这个在前一篇文章有详细描述 二、当我们查找不出是什么问题的时候,建议更换一下SDK包,我卡在这步一天,最后终于得到了解决 关于appium的安装过程,参考一下这位大哥的:https://blog.csdn.net/freeking101/article/details/107881979 这里放上我的SDK安装包,各位有需要的可以自行下载:
链接:https:
提取码:mn80
下面是一些关于自动化的入门代码:
1、入门调试
from appium import webdriver
import time
# 连接移动设备所必须的参数
desired_caps = {}
# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1.2"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.ss.android.ugc.aweme"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".splash.SplashActivity t9"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)
time.sleep(10)
print(driver.page_source)
# 关闭app
driver.close_app()
# 释放资源
driver.quit()
2、查找元素
from appium import webdriver
import time
# 连接移动设备所必须的参数
desired_caps = {}
# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.android.settings"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".Settings"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)
print(driver.current_package)
print(driver.current_activity)
time.sleep(1)
# print(driver.page_source)
# 在Android手机中 text并不是文本 而是属于标签的属性
# driver.find_element_by_xpath("/
3、基本操作
from appium import webdriver
import time
# 连接移动设备所必须的参数
desired_caps = {}
# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1.2"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.android.settings"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".Settings"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)
time.sleep(1)
# driver.install_app(r"C:\Users\bcc\Desktop\pycode\appcode\iBiliPlayer-bili.apk")
if driver.is_app_installed("tv.danmaku.bili"):
driver.remove_app("tv.danmaku.bili")
driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/search']").click()
time.sleep(1)
driver.find_element_by_xpath("//*[@resource-id='android:id/search_src_text']").send_keys("abc")
driver.find_element_by_xpath("//*[@resource-id='android:id/search_src_text']").send_keys("123")
driver.find_element_by_xpath("//*[@resource-id='android:id/search_src_text']").send_keys("张三")
time.sleep(2)
driver.find_element_by_xpath("//*[@resource-id='android:id/search_src_text']").clear()
# 关闭app
driver.close_app()
time.sleep(2)
# 释放资源
driver.quit()
4、模拟手势
from appium import webdriver
import time
# 连接移动设备所必须的参数
desired_caps = {}
# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.android.settings"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".Settings"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)
time.sleep(1)
# 获取当前屏幕的分辨率
size = driver.get_window_size()
print(size)
width = size["width"]
height = size["height"]
driver.swipe(start_x=width/2,start_y=height/3*2,end_x=width/2,end_y=height/3)
# el1 = driver.find_element_by_xpath("/
5、拖拽
from appium import webdriver
import time
# 连接移动设备所必须的参数
desired_caps = {}
# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.vphone.launcher"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".launcher3.Launcher"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)
time.sleep(1)
el1 = driver.find_element_by_xpath("//*[@text='酷安']")
el2 = driver.find_element_by_xpath("//*[@text='京东']")
driver.drag_and_drop(el1,el2)
time.sleep(2)
# 关闭app
driver.close_app()
# 释放资源
driver.quit()
6、高级模拟手势
from appium import webdriver
import time
from appium.webdriver.common.touch_action import TouchAction
# 连接移动设备所必须的参数
desired_caps = {}
# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.android.settings"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".Settings"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)
time.sleep(1)
el1 = driver.find_element_by_xpath("//*[@text='通知']")
el2 = driver.find_element_by_xpath("//*[@text='WLAN']")
# 实例化TouchAction
action = TouchAction(driver)
# press 既可以使用 坐标 也可以使用元素
# 在移动的过程中 wait是必不可少
# action.press(el1).wait(500).move_to(el2)
action.press(x=270,y=640).wait(500).move_to(x=270,y=320)
action.release()
# 执行 模拟手势的使用 TouchAction 进行模拟手势的时候 一定要记得执行操作
action.perform()
time.sleep(3)
# 关闭app
driver.close_app()
# 释放资源
driver.quit()
7、滑动案例
from appium import webdriver
import time
from appium.webdriver.common.touch_action import TouchAction
# 连接移动设备所必须的参数
desired_caps = {}
# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.android.settings"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".Settings"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)
time.sleep(1)
el1 = driver.find_element_by_xpath("//*[@text='声音']")
el2 = driver.find_element_by_xpath("//*[@text='WLAN']")
action = TouchAction(driver)
action.press(el1).wait(500).move_to(el2)
action.release()
# 需要执行上面的操作
action.perform()
time.sleep(1)
driver.find_element_by_xpath("//*[@text='安全']").click()
time.sleep(1)
driver.find_element_by_xpath("//*[@text='屏幕锁定']").click()
time.sleep(1)
driver.find_element_by_xpath("//*[@text='图案']").click()
time.sleep(1)
# 按下的位置 105 450 x 165 y 165
action.press(x=105,y=450).wait(200).move_to(x=270,y=450).wait(200).move_to(x=435,y=450).wait(200).move_to(x=270,y=615)\
.wait(200).move_to(x=105,y=780).wait(200).move_to(x=270,y=780).wait(200).move_to(x=435,y=780)
action.release()
action.perform()
time.sleep(2)
# 关闭app
driver.close_app()
# 释放资源
driver.quit()
8、其他操作
from appium import webdriver
import time
# 连接移动设备所必须的参数
desired_caps = {}
# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.android.settings"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".Settings"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)
time.sleep(1)
# print(driver.page_source)
print(driver.device_time)
print(driver.network_connection)
driver.get_screenshot_as_file("jietu.png")
# driver.save_screenshot()
driver.open_notifications()
time.sleep(3)
# 关闭app
driver.close_app()
# 释放资源
driver.quit()
最后我用的是夜神模拟器,可以不用连接手机
|