依赖基础
客户端安装:pip install Appium-Python-Client
IDE:PyCharm
Python多版本隔离工具:VEnv
国内依赖源:Simple Index
测试框架:unittest、pytest、nose
示例代码
import unittest
from appium import webdriver
class TestUnit(unittest.TestCase):
def setUp(self):
caps = {}
caps['platformName'] = 'android'
caps['deviceName'] = 'demo'
caps['appPackage'] = "com.xueqiu.android"
caps["appActivity"] = ".view.WelcomeActivityAlias"
self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
self.driver.implicitly_wait(5)
def test_xueqiu(self):
self.driver.find_element_by_xpath("//*[@text='牛人牛股']").click()
self.driver.find_element_by_xpath("//*[@text='港股掘金']").click()
def test_xueqiu_login(self):
self.driver.find_element_by_xpath("//*[@text='登录']").click()
生成junit styple的结果文件
pytest --junit-xml=junit.xml test_pytest.py
生成html结果报告
需要安装pytest
pytest --junit-xml=junit.xml --html=report.html --self-contained-html test_pytest.py
chromedrivewr
学会选择正确的chromedriver的版本
adb shell dumpsys package com.android.webview | grep versionName
adb shell dumpsys package com.android.chrome | grep versionName
/Users/seveniruby/projects/chromedriver/2.20/chromedriver --url-base=wd/hub --port=8000 --adb-port=5037 --verbose
示例代码
import unittest
from appium import webdriver
class TestUnit(unittest.TestCase):
def setUp(self):
pass
def test_chrome(self):
capabilities = {
'chromeOptions': {
'androidPackage': 'com.android.browser',
'androidActivity': '.BrowserActivity'
}
}
driver = webdriver.Remote('http://localhost:8000/wd/hub', capabilities)
driver.get('http://www.baidu.com')
def test_android_browser(self):
caps = {}
caps['platformName'] = 'android'
caps['deviceName'] = 'demo'
caps['browserName'] = 'Browser'
caps['chromedriverExecutableDir']='/Users/seveniruby/projects/chromedriver/2.20'
self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
self.driver.get("http://sogou.com")
Android里所有打开webview debug开关的进程,都会生成一个domain socket
adb shell cat /proc/net/unix | grep webview
adb forward tcp:$port localabstract:webview_devtools_remote_$pid
http://localhost:8888/json/version
{
"Android-Package": "com.xueqiu.android",
"Browser": "Chrome/44.0.2403.119",
"Protocol-Version": "1.1",
"User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Android SDK built for x86 Build/MASTER; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/44.0.2403.119 Mobile Safari/537.36",
"WebKit-Version": "537.36 (@200258)"
}
json接口
[ {
"description": "{\\"attached\\":true,\\"empty\\":false,\\"height\\":1478,\\"screenX\\":0,\\"screenY\\":190,\\"visible\\":true,\\"width\\":1080}",
"devtoolsFrontendUrl": "http://chrome-devtools-frontend.appspot.com/serve_rev/@200258/inspector.html?ws=localhost:8888/devtools/page/BC234761-FB9F-4F48-BFF3-3D7B71CA777D",
"faviconUrl": "https://danjuanapp.com/images/favicon_128.png",
"id": "BC234761-FB9F-4F48-BFF3-3D7B71CA777D",
"title": "蛋卷基金",
"type": "page",
"url": "https://danjuanapp.com/my-money?channel=1300100158&refer=xq_trade",
"webSocketDebuggerUrl": "ws://localhost:8888/devtools/page/BC234761-FB9F-4F48-BFF3-3D7B71CA777D"
}, {
"description": "{\\"attached\\":true,\\"empty\\":false,\\"height\\":1478,\\"screenX\\":0,\\"screenY\\":190,\\"visible\\":true,\\"width\\":1080}",
"devtoolsFrontendUrl": "http://chrome-devtools-frontend.appspot.com/serve_rev/@200258/inspector.html?ws=localhost:8888/devtools/page/7BBB43F1-AF4B-44C1-9266-74A6F74A90BE",
"faviconUrl": "https://assets.imedao.com/broker-us/static/images/favicon.9b631977.png",
"id": "7BBB43F1-AF4B-44C1-9266-74A6F74A90BE",
"title": "雪盈证券",
"type": "page",
"url": "https://www.snowballsecurities.com/trade",
"webSocketDebuggerUrl": "ws://localhost:8888/devtools/page/7BBB43F1-AF4B-44C1-9266-74A6F74A90BE"
}, {
"description": "{\\"attached\\":true,\\"empty\\":false,\\"height\\":1478,\\"screenX\\":0,\\"screenY\\":190,\\"visible\\":true,\\"width\\":1080}",
"devtoolsFrontendUrl": "http://chrome-devtools-frontend.appspot.com/serve_rev/@200258/inspector.html?ws=localhost:8888/devtools/page/638B1591-F251-499F-8DDD-0EE2EE399B5C",
"id": "638B1591-F251-499F-8DDD-0EE2EE399B5C",
"title": "实盘交易",
"type": "page",
"url": "file:///android_asset/h5/modules/broker/tradeHome.html",
"webSocketDebuggerUrl": "ws://localhost:8888/devtools/page/638B1591-F251-499F-8DDD-0EE2EE399B5C"
} ]
作业
用手机浏览器访问 testerhome.com,把截图贴到回复