这篇文章讲得挺全的,比较忙,就结合我的自己的实际做法改改吧~
需要用到的软件如下:
1. jdk-8u121-window(做过Java开发就有了)。
2.Android-sdk_r24.3.4-windows(下载了Android Studio,就带有了)
3.Python:(V3.6也可以)
4.appium:1.4.13.1
5.Node.js:node-v4.4.7-x64(Appium的解释器)
6.Appium-python-Client
7.pycharm
1-3 要设置环境变量
其中1-5是可以先下载的,6则需要在完成前面的五个步骤后才进行,7为可选IDE工具。
adb调试
cmd 进入C:\platform-tools 文件夹
输入adb devices -l 检证手机是否连接成功(其他手机打开了开发者模式)
找到APP的包:adb shell dumpsys activity recents | findstr intent
例:网易云APP
from appium import webdriver
caps = {
'platformName': "Android",
'platformVersion': '10',
'deviceName': 'Jazon',
'appPackage': 'com.netease.cloudmusic',
'appActivity': '.activity.LoadingActivity',
'noReset': True,
'newCommandTimeout': 3600,
'automationName': 'UiAutomator2'
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
driver.implicitly_wait(10)
driver.('我的推荐').click()
driver.find_element_by_xpath('//*[@text="每日推荐"]').click()
songs = driver.find_elements_by_id('com.netease.cloudmusic:id/songName')[:3]
for song in songs:find_element_by_accessibility_id
print(song.text)
driver.quit()
突然看到Selenium,想知道Selenium和Appium的关系
区别:Selenium是web端的自动化测试工具,Appium是移动端的自动化测试工具
联系:在Python的appium包中实际继承了Selenium,在测试过程中将移动端的页面元素当作是网页来处理,
所以Selenium的定位方法也可以使用
Selenium,我也做了豆瓣的
from selenium import webdriver
import time
#实例化浏览器driver
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Chrome()
#操作步骤
#打开网页
driver.get("http://www.douban.com/")
#点击密码登录(找到该元素,点击)
#找所属的iframe
el = driver.find_element_by_tag_name('iframe')
#切换iframe
driver.switch_to.frame(el)
#点击密码登录(找到该元素,点击)
driver.find_element_by_css_selector('.account-tab-account').click()
#输入用户名,密码
username_el = WebDriverWait(driver,timeout=5,poll_frequency=1).until(lambda x:x.find_element_by_id('username'))
username_el.send_keys('17396235508')
driver.find_element_by_id('password').send_keys('40086ugly')
#点击登录豆瓣 a标签 link_text()
driver.find_element_by_link_text('登录豆瓣').click()
time.sleep(5)
#等待方式
#隐式等待 作用域: 全局 报错信息:NoSuchElementException
driver.implicitly_wait(3)
#显式等待 作用域:一个元素 报错信息:TimeoutException
#username_el = WebDriverWait(driver,timeout=5,poll_frequency=1).until(lambda x:x.find_element_by_id('username11'))
#退出
driver.quit()