如何做視頻教程網(wǎng)站seo推廣招聘
目錄
Appium中的api(三)
1.輸入和清空內(nèi)容
1--輸入內(nèi)容
2--清空內(nèi)容
2.獲取文本內(nèi)容
3.獲取文本位置
4.獲取文本的大小(即獲取控件的寬和高)
5.滑動(dòng)api
6.拖拽api
7.如何獲取手機(jī)分辨率
8.如何截圖
9.模擬按鍵事件api
10.操作通知欄
案例:App自動(dòng)化模擬
1--源碼
2--效果
附錄
下面是一些常見(jiàn)的keyCode
Appium中的api(三)
1.輸入和清空內(nèi)容
1--輸入內(nèi)容
send_keys(設(shè)置該元素的值)
element.send_keys("這里面是設(shè)置元素的值")
2--清空內(nèi)容
clear() 清空元素的值
send_key("")
element.send_keys("")
element.clear()
2.獲取文本內(nèi)容
element.text? #? 這個(gè)是獲取文本內(nèi)容
element.text
3.獲取文本位置
element.location # 獲取坐標(biāo)信息
element.location['x'] # 獲取x軸
element.location['y'] # 獲取y軸
4.獲取文本的大小(即獲取控件的寬和高)
element.size # 獲取控件的寬和高
5.滑動(dòng)api
def swipe(self, start_x: int, start_y: int, end_x: int, end_y: int, duration: int = 0)
起始位置坐標(biāo) 滑動(dòng)到 結(jié)束坐標(biāo)位置
dirver.swipe(startX,startY,endX,endY,duration)
6.拖拽api
# 把endElement 拖拽到scroll位置
driver.scroll(startElement,endElement)
# 把endElement 拖拽到scroll位置
driver.drag_and_drop(startElement,endElement)
7.如何獲取手機(jī)分辨率
# 獲取手機(jī)分辨率信息
getInfo =? driver.get_window_size()
# 獲取手機(jī)的寬度
myWidthInfo =??getInfo["width"]
# 獲取手機(jī)的高度
myHeightInfo =??getInfo["height"]
8.如何截圖
driver.get_screenshot_as_file
參數(shù)(文件路徑,文件名)
9.模擬按鍵事件api
driver.press_keycode(4)? ?# 模擬返回案件
10.操作通知欄
driver.open_notifications()
案例:App自動(dòng)化模擬
1--源碼
下面是全部的python源碼
import time import unittest from appium import webdriver from appium.options.android import UiAutomator2Options from appium.webdriver.common.appiumby import AppiumBycapabilities = dict(platformName='Android', # 名字,這個(gè)這就是這個(gè)automationName='uiautomator2', # 這個(gè)是使用的驅(qū)動(dòng)deviceName='Android', # 這個(gè)是設(shè)備名字可以隨意appPackage='com.android.settings', # 這個(gè)是你要啟動(dòng)的包名appActivity='.Settings', # 這個(gè)是你要啟動(dòng)的活動(dòng)單元名字language='en',locale='US',udid="127.0.0.1:21503" # 這個(gè)是要連接的設(shè)備的ip和端口號(hào) 我用的是逍遙模擬器 端口號(hào)為 21503 )appium_server_url = 'http://localhost:4723'class MyElementUiTest(unittest.TestCase):# 前置處理def setUp(self) -> None:self.driver = webdriver.Remote(appium_server_url, options=UiAutomator2Options().load_capabilities(capabilities))# 后置處理 關(guān)閉連接會(huì)話sessiondef tearDown(self) -> None:self.driver.quit()# testdef test_find_by_id(self):# 獲取當(dāng)前界面的信息myPackageInfo = self.driver.current_package;print(myPackageInfo)# 獲取當(dāng)前頁(yè)面的包名myActivityInfo = self.driver.current_activityprint(myActivityInfo)def test_my_element_test(self):# 獲取搜索欄信息mySearchElementID ="com.android.settings:id/search_action_bar"mySearchElement = self.driver.find_element(AppiumBy.ID, mySearchElementID)# 點(diǎn)擊搜索欄mySearchElement.click();# 停留2秒time.sleep(2)print("獲取編輯框id")# 獲取編輯框的idmyEditTextID = "android:id/search_src_text"myEditText = self.driver.find_element(AppiumBy.ID, myEditTextID)# 輸入信息,你好啊AppiummyEditText.send_keys("你好啊Appium")# 停留兩秒鐘time.sleep(2)# 清除信息myEditText.clear()time.sleep(2)print("輸入信息,你好啊Appium")# 輸入信息,你好啊AppiummyEditText.send_keys("你好啊Appium")time.sleep(2)# 清除信息myEditText.send_keys("")time.sleep(2)print("模擬返回")# 模擬返回self.driver.press_keycode(4)# 停留兩秒time.sleep(2)# 滑動(dòng)兩次屏幕# 獲取設(shè)備信息print("獲取設(shè)備信息")devicesInfo = self.driver.get_window_size();print(devicesInfo)# 獲取高度height = devicesInfo['height']print(height)width = devicesInfo['width']print(width)print("模擬滑動(dòng)屏幕")# def swipe(self, start_x: int, start_y: int, end_x: int, end_y: int, duration: int = 0),self.driver.swipe( start_x=width * 0.5, start_y=height * 0.8,end_x = width * 0.5, end_y=height * 0.2, duration=1000)time.sleep(2)self.driver.swipe( start_x=width * 0.5, start_y=height * 0.8,end_x = width * 0.5, end_y=height * 0.2, duration=1000)time.sleep(2)print("模擬滑動(dòng)屏幕結(jié)束")# 通過(guò)是否包含字體獲取控件# xpathmyStartElement = self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text,'應(yīng)用和通知')]")# 結(jié)束元素myEndElement = self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text,'聲音')]")print("拖拽")self.driver.scroll(myStartElement, myEndElement)time.sleep(2)print("拖拽結(jié)束")self.driver.drag_and_drop(myEndElement, myStartElement)time.sleep(2)print("拖拽結(jié)束")# 打開(kāi)通知欄self.driver.open_notifications()time.sleep(2)print("打開(kāi)通知欄結(jié)束")self.driver.back()
2--效果
附錄
下面是一些常見(jiàn)的keyCode
撥號(hào)鍵(KEYCODE_CALL) | |
6 | 掛機(jī)鍵(KEYCODE_ENDCALL) |
8 | BackSpace(退格鍵,但通常不直接用這個(gè)KeyCode表示退格) |
9 | Tab鍵(KEYCODE_TAB) |
16 | Shift_L(左Shift鍵) |
19 | 導(dǎo)航鍵向上(KEYCODE_DPAD_UP) |
20 | 導(dǎo)航鍵向下(KEYCODE_DPAD_DOWN) |
21 | 導(dǎo)航鍵向左(KEYCODE_DPAD_LEFT) |
22 | 導(dǎo)航鍵向右(KEYCODE_DPAD_RIGHT) |
23 | 導(dǎo)航鍵確定鍵(KEYCODE_DPAD_CENTER) |
24 | 音量增加鍵(KEYCODE_VOLUME_UP) |
25 | 音量減小鍵(KEYCODE_VOLUME_DOWN) |
26 | 電源鍵(KEYCODE_POWER) |
27 | Escape鍵(KEYCODE_ESCAPE)或拍照鍵(在某些上下文中) |
32 | 空格鍵(space) |
36 | Home鍵(與KEYCODE_HOME相同,但數(shù)字不同) |
37 | 左箭頭鍵(Left) |
38 | 上箭頭鍵(Up) |
39 | 右箭頭鍵(Right) |
40 | 下箭頭鍵(Down) |
46 | Delete鍵(KEYCODE_DEL) |
61 | Enter鍵(在某些上下文中,但通常Enter用66表示) |
66 | 回車鍵(KEYCODE_ENTER) |
67 | 退格鍵(KEYCODE_DEL的另一種表示,但通常退格用8表示BackSpace) |
82 | 菜單鍵(KEYCODE_MENU) |
83 | 通知鍵(KEYCODE_NOTIFICATION,但注意這不是標(biāo)準(zhǔn)的Android鍵碼) |
84 | 搜索鍵(KEYCODE_SEARCH) |
91 | 話筒靜音鍵(KEYCODE_MUTE,但注意這不是標(biāo)準(zhǔn)的Android鍵碼) |
92 | 向上翻頁(yè)鍵(KEYCODE_PAGE_UP) |
93 | 向下翻頁(yè)鍵(KEYCODE_PAGE_DOWN) |
111 | ESC鍵(與KEYCODE_ESCAPE相同,但數(shù)字不同) |
112 | 刪除鍵(FORWARD_DEL,與KEYCODE_DEL不同) |
115 | 大寫鎖定鍵(KEYCODE_CAPS_LOCK) |
122 | 光標(biāo)移動(dòng)到開(kāi)始鍵(KEYCODE_MOVE_HOME) |
123 | 光標(biāo)移動(dòng)到末尾鍵(KEYCODE_MOVE_END) |
143 | 小鍵盤鎖(KEYCODE_NUM_LOCK) |
164 | 揚(yáng)聲器靜音鍵(KEYCODE_VOLUME_MUTE的另一種表示,但注意上下文) |