1、几个APP的区别:
- Native App 是一种基于智能手机本地操作系统如iOS、Android、WP并使用原生程式编写运行的第三方应用程序,也叫本地app。
- Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。如:淘宝、京东
- WebApp 是指基于Web的系统和应用,其作用是向广大的最终用户发布一组复杂的内容和功能。百度浏览器、qq浏览器,里面有控件的名字是 WebView
2、Native App 原生应用的分类
- Android 标准组件(雪球的大部分界面,大多数都有resour-id、text属性)
- 非标准组件:
1、Flutter - 闲鱼 2、React Native:Facebook 3、Weex:极客时间
- 游戏
3、非标准控件的特征
- Android原生组件:Appium默认支持
- Native非标准组件:Appium默认支持
- 自定义 View 识别:
使用相对定位、父控件加百分比偏移 OCR、图像识别、AI
- 游戏控件:使用游戏引擎特定技术
4、游戏自动化测试
1、appium的image定位,图像识别 2、成熟的 airtest 框架
5、Hybrid 混合App定位
import time
import pytest
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
from appium.webdriver.webdriver import WebDriver
from hamcrest import *
import yaml
class TestDemo:
def setup(self):
caps = {
"platformName": "android",
"deviceName": "008640dd0804",
"automationName": "uiautomator2",
"appPackage": "com.xueqiu.android",
"appActivity": ".view.WelcomeActivityAlias",
"autoGrantPermissions": "true"
}
self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
self.driver.find_element(AppiumBy.ID, "com.xueqiu.android:id/tv_agree").click()
self.driver.implicitly_wait(20)
def test_001(self):
self.driver.find_element(AppiumBy.XPATH, "//*[@text='交易']").click()
for i in range(5):
time.sleep(1)
print(self.driver.contexts)
self.driver.find_element(AppiumBy.XPATH, "//*[@text='基金开户']").click()
def test_002(self):
self.driver.find_element(AppiumBy.XPATH, "//*[@text='交易']").click()
for i in range(5):
time.sleep(1)
print(self.driver.contexts)
self.driver.find_element(AppiumBy.XPATH, "//*[@text='基金开户']").click()
self.driver.switch_to.context(self.driver.contexts[1])
print(self.driver.current_context)
self.driver.find_element(AppiumBy.ID, "phone-number").send_keys("12343234532")
def teardown(self):
time.sleep(20)
self.driver.quit()
|