实操常用Api :
常用API:
点击
也可以用tab实现点击操作
box=driver.find_element_by_id(“com.xsteach.appedu:id/rl_home_top_search”)
box.click()
清空
driver.find_element_by_id(“editText”).clear()
左右上下滑动
‘’‘左滑’’’
x = driver.get_window_size()[‘width’]
y = driver.get_window_size()[‘height’]
driver.swipe(x*3/4,y/4,x/4,y/4)
‘’‘右滑’’’
x = driver.get_window_size()[‘width’]
y = driver.get_window_size()[‘height’]
driver.swipe(x/4,y/4,x*3/4,y/4)
‘’‘下滑’’’
x = driver.get_window_size()[‘width’]
y = driver.get_window_size()[‘height’]
driver.swipe(x/2,y*3/4,x/2,y/4)
‘’‘上滑’’’
x = driver.get_window_size()[‘width’]
y = driver.get_window_size()[‘height’]
driver.swipe(x/2,y/4,x/2,y*3/4)
滑动界面
from appium.webdriver.common.touch_action import TouchAction
def test_scroll_down(driver):
screen = driver.get_window_size()
action = TouchAction(driver)
action.press(x=screen[‘width’]/2,y=screen[‘height’]/2)
action.move_to(x=0,y=-screen[‘height’]/10)
action.release()
action.perform()
解锁密码是可以用
获取界面属性,控件属性
1)获取当前Activity名称activity = driver.current_activity
2) 获取屏幕宽高screen = driver.get_window_size()
3)获取控件文本mobile_name.get_attribute(‘text’) 或者 mobile_name.text
4)获取控件类名mobile_name.get_attribute(‘className’)
5)判断控件是否显示mobile_name.is_displayed() 或者 mobile_name.get_attribute(‘displayed’)
6)获得控件位置mobile_name.location
7)获得控件大小mobile_name.size
8)查找控件子结点parent.find_elements_by_class_name(‘android.widget.TextView’)
同样:查找控件的其它方法,也适用于查找子结点。对于交互后的验证,无法验证到具体的数据内容,可以验证当前的Activity,或者文本,或者列表是否为空等等。
截屏
img_folder = os.path.abspath(os.path.join(os.path.dirname(file), “…”)) + ‘pic\’
cur_time =time.strftime(’%Y%m%d%H%M’, time.localtime(time.time()))
screen_save_path = img_folder + cur_time + ‘.png’
print(screen_save_path)
time.sleep(2)
driver.get_screenshot_as_file(screen_save_path)
断言某个词汇是否在当前页面显示
assert “建筑设计” in driver.page_source
模拟点击返回键
driver.press_keycode(4)
其中按钮的定义,由Android里的KeyEvent.java里定义的,所以其它的Android按钮也是支持的。
注意点:
关闭driverdriver.quit()注意:一定要记得关闭driver, 否则下次连接的时候可能会出异常,因为Appium以为你上次未关闭,会创建Session失败。
实操:用开源:
from appium import webdriver
import time
caps = {}
caps[“appPackage”] = “com.xsteach.appedu”
caps[“appActivity”] = “com.xsteach.appedu.StartActivity”
caps[“platformName”] = “Android”
caps[“platformVersion”] = ‘8’
caps[“deviceName”] = ‘3HX0217115011233’
caps[“unicodeKeyboard”] = True
caps[“autoAcceptAlerts”] = True #对权限弹窗进行授权
caps[“resetKeyboard”] = True
caps[“noReset”] = True
caps[“newCommandTimeout”]=6000
driver = webdriver.Remote(“http://localhost:4723/wd/hub”, caps)
#获取手机大小 {‘width’: 720, ‘height’: 1280}
size = driver.get_window_size()
print(size)
print(driver.is_app_installed(“com.xsteach.appedu”))
#关闭app
driver.close_app()
搜索的完整实例
from appium import webdriver
import time
caps = {}
caps[“appPackage”] = “com.xsteach.appedu”
caps[“appActivity”] = “com.xsteach.appedu.StartActivity”
caps[“platformName”] = “Android”
caps[“platformVersion”] = ‘8’
caps[“deviceName”] = ‘3HX0217115011233’
caps[“unicodeKeyboard”] = True
caps[“autoAcceptAlerts”] = True #对权限弹窗进行授权
caps[“resetKeyboard”] = True
caps[“noReset”] = True
caps[“newCommandTimeout”]=6000
driver = webdriver.Remote(“http://localhost:4723/wd/hub”, caps)
#获取手机大小{‘width’: 1080, ‘height’: 1808}
size = driver.get_window_size()
print(size)
查看指定包名的app是否已经安装
print(driver.is_app_installed(“com.xsteach.appedu”))
#driver.start_activity(‘com.xsteach.appedu’, ‘.StartActivity’)
打印一下当前页面的activity
print(driver.current_activity)
time.sleep(5)
uList = driver.find_elements_by_android_uiautomator(“new UiSelector().text(“个人中心”)”)
print(uList[0].text)
box=driver.find_element_by_id(“com.xsteach.appedu:id/rl_home_top_search”)
box.click()
time.sleep(2)
box=driver.find_element_by_id(“com.xsteach.appedu:id/editText”)
time.sleep(2)
box.send_keys(“python”)
time.sleep(4)
driver.find_element_by_id(“com.xsteach.appedu:id/item_tv_dynamic_search_result”).click()
time.sleep(3)
#关闭app
driver.close_app()
#2、他可以跳过某些场景,达到某个页面
element = driver.find_element_by_android_uiautomator(‘new UiSelector().text(“新用户”)’)
element.click()
print(driver.current_activity)
ele = driver.start_activity(‘com.xsteach.appedu’, ‘.StartActivity’)
print(driver.current_activity)
time.sleep(5)
box=driver.find_element_by_id(“com.xsteach.appedu:id/rl_home_top_search”)
box.click()
time.sleep(2)
box=driver.find_element_by_id(“editText”)
time.sleep(1)
box.send_keys(“设计”)
time.sleep(3)
box.clear()
box.send_keys(“编程”)
driver.find_element_by_id(“tv_Text”).click()
登录的完整实例
from appium import webdriver
import time
import os
caps = {}
caps[“appPackage”] = “com.xsteach.appedu”
caps[“appActivity”] = “com.xsteach.appedu.StartActivity”
caps[“platformName”] = “Android”
caps[“platformVersion”] = ‘8’
caps[“deviceName”] = ‘3HX0217115011233’
caps[“unicodeKeyboard”] = True
caps[“autoAcceptAlerts”] = True #对权限弹窗进行授权
caps[“resetKeyboard”] = True
caps[“noReset”] = True
caps[“newCommandTimeout”]=6000
driver = webdriver.Remote(“http://localhost:4723/wd/hub”, caps)
driver.implicitly_wait(5)
person_center =driver.find_element_by_id(“content_rb_mine”)
#person_center = driver.find_elements_by_android_uiautomator(“new UiSelector().text(”+个人中心")")
person_center.click()
log_in = driver.find_element_by_id(“tvLogin”)
log_in.click()
driver.find_element_by_id(“etUser”).send_keys(“fosterwu”)
driver.find_element_by_id(“etPwd”).send_keys(“gloryroad123”)
driver.find_element_by_id(“btnLogin”).click()
time.sleep(3)
driver.close_app()