栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【移动测试Android】元素定位|基本操作|手势操作

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【移动测试Android】元素定位|基本操作|手势操作

【移动测试Android】元素定位|一些基本操作
  • 元素定位
    • 元素定位工具
      • UIAutomatorView
      • appium desktop inspector
      • weditor
  • 基本操作
    • 基础api
    • 输入文本
  • 模拟手势
  • 其他操作

元素定位

打开手机上的“设置”,点击“显示”

from appium import webdriver
import time
# 连接移动设备所必需的参数,放到字典中
from selenium.webdriver.common.by import By

desired_caps = {'deviceName': '127.0.0.1:62001', 'platformName': 'Android', 'platformVersion': '7.1',
                'appPackage': 'com.android.settings', 'appActivity': '.Settings'}

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

time.sleep(1)
# find_element(by=By.XPATH, value=xpath)
# 在Android手机中,text并不是文本,而是属于标签的 属性
driver.find_element(by=By.XPATH, value="//*[@text='显示']").click()
# driver.find_element_by_xpath("//*[@text='显示']").click()    弃用

print(driver.page_source)

time.sleep(3)
# 关闭app
driver.close_app()
# 释放资源
driver.quit()
元素定位工具 UIAutomatorView


appium desktop inspector


weditor

uiatuomator2,python第三方库 appUi自动化测试框架
【安装步骤:】
cmd:
1.pip install Uiautomator2
2.python -m uiautomator2 init(报错:进程被终止,查看是atx-agent未安装成功,自行下载安装包本地安装,成功)
3.pip install weditor(报错,git clone 克隆到本地再安装,成功)
确认安装成功:wediore --help
【使用:】

基本操作 基础api
from appium import webdriver
import time

# 连接移动设备所必需的参数,放到字典中
desired_caps = {'deviceName': '127.0.0.1:62001', 'platformName': 'Android', 'platformVersion': '7.1',
                'appPackage': 'com.android.settings', 'appActivity': '.Settings'}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_capabilities=desired_caps)
time.sleep(1)

# 获取界面xml源码
print(driver.page_source)

# 安装app(这里用的是32位)
driver.install_app(r"C:Userswin10DesktoppycodeappcodeiBiliPlayer-bili.apk")

# 判断app是否安装
if driver.is_app_installed("tv.danmaku.bili"):
    # 卸载
    driver.remove_app("tv.danmaku.bili")
    
# 关闭app
driver.close_app()

time.sleep(2)
# 释放资源
driver.quit()
# 当前的包名
print(driver.current_package)
# 当前界面名字
print(driver.current_activity)

el=driver.find_element(by=By.XPATH, value="//*[@text='显示']")
# 获取元素的宽高(字典)
print(el.size)
# 获取元素文本内容
print(el.text)
# 获取属性值
print(el.get_attribute("text"))
# 获取元素左上角坐标
print(el.location)

元素定位方法:

# 等待:显式等待,强制等待,隐式等待
driver.implicitly_wait(15)
# 通过resourceid定位元素
driver.find_element(by=AppiumBy.ID, value="com.android.settings:id/expand_indicator").click()
# 2.uiautomator
el = driver.find_element_by_android_uiautomator('new UiSelector().text("通知")')
# 组合定位
driver.find_element_by_android_uiautomator('new UiSelector().text("添加帐号").resourceId("com.android.contacts:id/add_account_button")').click()
# 3. xpath
driver.find_element(by=By.XPATH, value="//*[@resource-id='com.android.settings:id/search']").click()
输入文本

进入“设置”,点击右上角“搜索”,写入三组内容,清除最后输入的内容

driver.find_element(by=By.XPATH, value="//*[@resource-id='com.android.settings:id/search']").click()
time.sleep(5)
driver.find_element(by=By.XPATH, value="//*[@resource-id='android:id/search_src_text']").send_keys("abc")
driver.find_element(by=By.XPATH, value="//*[@resource-id='android:id/search_src_text']").send_keys("123")
driver.find_element(by=By.XPATH, value="//*[@resource-id='android:id/search_src_text']").send_keys("张三")

time.sleep(2)
driver.find_element(by=By.XPATH, value="//*[@resource-id='android:id/search_src_text']").clear()

模拟手势
  1. 滚动

页面滑动有“惯性”机制,会根据按下、抬起的位置以及总的时间,滚动不一样的距离
两种滚动方式:

# 1.滚动,根据当前手机分辨率确定坐标
driver.swipe(start_x=270, start_y=640, end_x=270, end_y=320)
# 2.按元素定位要滑动到的相对位置
el1 = driver.find_element(by=By.XPATH, value="//*[@text='通知']")
el2 = driver.find_element(by=By.XPATH, value="//*[@text='WLAN']")
driver.scroll(el1, el2)

法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)
  1. 拖拽
el1 = driver.find_element(by=AppiumBy.XPATH, value="//*[@text='通知']")
el2 = driver.find_element(by=AppiumBy.XPATH, value="//*[@text='WLAN']")
# 1拖拽到2
driver.drag_and_drop(el1, el2)
# “哔哩哔哩”拖拽到“豆瓣”处
el1 = driver.find_element(by=AppiumBy.XPATH, value="//*[@text='哔哩哔哩']")
el2 = driver.find_element(by=AppiumBy.XPATH, value="//*[@text='豆瓣']")
action = ActionChains(driver)
action.w3c_actions.pointer_action.click_and_hold(el1).pause(2).move_to(el2)
action.w3c_actions.pointer_action.release()
action.perform()
time.sleep(3)
  1. 按下再抬起
action = ActionChains(driver)
# 按下再抬起
action.w3c_actions.pointer_action.click_and_hold(el1)
action.w3c_actions.pointer_action.release()
# 执行
action.perform()
  1. 长按
action = ActionChains(driver)
# 长按(2s)
action.w3c_actions.pointer_action.click_and_hold(el1).pause(2)
action.w3c_actions.pointer_action.release()
# 执行
action.perform()
# 长按两秒,移动到el2
action.w3c_actions.pointer_action.click_and_hold(el1).pause(2).move_to(el2)
其他操作
# 获取手机时间
print(driver.device_time)
# 获取网络连接情况(帮助文档查看)
print(driver.network_connection)
# 截图
print(driver.get_screenshot_as_file("jietu.png"))
# 打开通知
driver.open_notifications()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857037.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号