Appium定位方式代码

selenium定位和appium定位区别

Selenium定位:
1.id(html id 唯一)
2.name定位
3.class定位
4.xpath定位

Appium定位:
1.id(app项目 不唯一)定位
2.name定位不支持
3.class定位支持
4.xpath定位(不推荐),不支持绝对路径定位,支持相对路径定位
5.列表定位

注意:
1.某些元素,使用Appium无法直接识别,只能使用UiAutomatorViewer工具(Android SDK)进行识别
2.UiAutomatorViewer工具和appium inspector不能同时使用

Android8.1以后SDK tools自带的uiautomator无法直接识别机器界面信息
解决方式:
1.截取uix资源文件
adb shell uiautomator dump /sdcard/screen.uix
adb pull /sdcard/screnn.uix F:/ui/screen.uix

2.截图
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png F:/ui/screen.png

打开uiautomator导入即可
Appium定位方式代码_第1张图片

install_uninstall.py

# -*- codeing = utf-8 -*-
# @Time : 2022/3/25 15:14
# @Author :su
# @File : install&uninstall.py
# @Software : PyCharm


from appium import webdriver
from time import sleep

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9'
desired_caps['deviceName'] = '127.0.0.1:62025'


#安装app
desired_caps['app'] = r'F:\kaoyan3.1.0.apk'
desired_caps['appPackage'] = 'com.tal.kaoyan'
desired_caps['appActivity'] = 'com.tal.kaoyan.ui.activity.SplashActivity'
desired_caps['noReset'] = 'false'


# webdriver对象连接appium服务端
kydriver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)


# is_app_installed        判断app是否安装的方法
sleep(2)
if kydriver.is_app_installed("com.tal.kaoyan"):
    print("安装成功")
else:
    print("安装失败")


sleep(2)
# remove_app      卸载app的方法
kydriver.remove_app("com.tal.kaoyan")
print("自动卸载成功")
print("安装卸载一次")

cancel_skip.py

# -*- codeing = utf-8 -*-
# @Time : 2022/3/25 15:51
# @Author :su
# @File : cancel_skip.py
# @Software : PyCharm

from appium import webdriver
from time import sleep

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9'
desired_caps['deviceName'] = '127.0.0.1:62025'


#安装app
desired_caps['app'] = r'F:\kaoyan3.1.0.apk'
desired_caps['appPackage'] = 'com.tal.kaoyan'
desired_caps['appActivity'] = 'com.tal.kaoyan.ui.activity.SplashActivity'
desired_caps['noReset'] = 'false'


# webdriver对象连接appium服务端
kydriver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

# 需要等待时间
kydriver.implicitly_wait(3)     #隐式等待

# 取消按钮
kydriver.find_element('id','android:id/button2').click()
kydriver.find_element('id','com.tal.kaoyan:id/tv_skip').click()

脚本优化
1.脚本尽量放在函数/方法中,可反复调用
2.app项目,有些元素可能出现,可能不出现,使用try…except…else…

# -*- codeing = utf-8 -*-
# @Time : 2022/3/25 15:51
# @Author :su
# @File : cancel_skip.py
# @Software : PyCharm

from appium import webdriver
from time import sleep

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9'
desired_caps['deviceName'] = '127.0.0.1:62025'


#安装app
desired_caps['app'] = r'F:\kaoyan3.1.0.apk'
desired_caps['appPackage'] = 'com.tal.kaoyan'
desired_caps['appActivity'] = 'com.tal.kaoyan.ui.activity.SplashActivity'
desired_caps['noReset'] = 'false'


# webdriver对象连接appium服务端
kydriver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

# 需要等待时间
kydriver.implicitly_wait(3)     #隐式等待


# kydriver.find_element('id','android:id/button2').click()            # 取消按钮
# kydriver.find_element('id','com.tal.kaoyan:id/tv_skip').click()     #跳过按钮
#函数1:检查是否存在取消更新按钮并点击
def check_cancelBtn():
    print("检查。。。是否有取消更新按钮")
    try:
        cancelBtn=kydriver.find_element('id','android:id/button2')
    except:
        print("取消更新按钮不存在")
    else:
        print("取消更新按钮存在")
        cancelBtn.click()

#函数2:检查是否存在跳过按钮并点击
def check_skipBtn():
    print("检查。。。是否有跳过按钮")
    try:
        skipBtn=kydriver.find_element('id','com.tal.kaoyan:id/tv_skip')
    except:
        print("跳过按钮不存在")
    else:
        print("跳过按钮存在")
        skipBtn.click()


#验证
if __name__=='__main__':
    check_cancelBtn()
    check_skipBtn()

你可能感兴趣的:(python)