1. 程式人生 > >Appium-Python各種元素定位及操作方法解析

Appium-Python各種元素定位及操作方法解析

元素定位方法 # /site-packages/selenium/webdriver/remote/webdriver.py

通過id定位元素
12 find_element_by_id(self, id_) # Usage: driver.find_element_by_id('foo')find_elements_by_id(self, id_) # Usage: driver.find_elements_by_id('foo')
通過xpath(相對路徑)定位元素
12 find_element_by_xpath(self, xpath) # Usage: driver.find_element_by_xpath('//div/td[1]')
find_elements_by_xpath(self, xpath) # Usage: driver.find_elements_by_xpath("//div[contains(@class, 'foo')]")
12 find_element_by_link_text(self, link_text) # Usage: driver.find_element_by_link_text('Sign In')find_elements_by_link_text(self, link_text) # Usage: driver.find_elements_by_link_text('Sign In')
12 find_element_by_partial_link_text(self, link_text) # Usage: driver.find_element_by_partial_link_text('Sign')find_elements_by_partial_link_text(self, link_text) # Usage: driver.find_elements_by_partial_link_text('Sign')
通過name定位元素(被accessibility_id替代)
12 find_element_by_name(self, name) # Usage: driver.find_element_by_name('foo')
find_elements_by_name(self, name) # Usage: driver.find_elements_by_name('foo')
通過accessibility_id定位元素
12 find_element_by_accessibility_id(self, id) # Usage: driver.find_element_by_accessibility_id('id')find_elements_by_accessibility_id(self, id) # Usage: driver.find_elements_by_accessibility_id('id')
通過tag_name定位元素(被class_name替代)
12 find_element_by_tag_name(self, name) # Usage: driver.find_element_by_tag_name('foo')find_elements_by_tag_name(self, name) # Usage: driver.find_elements_by_tag_name('foo')
通過class_name定位元素
12 find_element_by_class_name(self, name) # Usage: driver.find_element_by_class_name('foo')find_elements_by_class_name(self, name) # Usage: driver.find_elements_by_class_name('foo')
通過css_selector定位元素
12 find_element_by_css_selector(self, css_selector) # Usage: driver.find_element_by_css_selector('#foo')find_elements_by_css_selector(self, css_selector) # Usage: driver.find_elements_by_css_selector('#foo')
擷取當前視窗的截圖,如果有寫入錯誤會返回False,其它返回True
1 get_screenshot_as_file(self, filename) # Usage: driver.get_screenshot_as_file('c:/foo.png')
獲取當前螢幕的解析度(長和寬)
1 get_window_size(self, windowHandle='current') # Usage: driver.get_window_size()
獲取當前頁面的網址
1 current_url(self) # Usage: driver.current_url
獲取當前頁面的源
1 page_source(self) # driver.page_source
關閉當前視窗
1 close(self) # driver.close()
退出指令碼執行並關閉每個相關的視窗連線
1 quit(self) # driver.quit()
切換webview與native
1 driver.switch_to.context("WEBVIEW")

操作 # python-client/appium/webdriver/webdriver.py

從元素origin_el滾動至元素destination_el
1 scroll(self, origin_el, destination_el) # Usage: driver.scroll(el1, el2)
將元素origin_el拖到目標元素destination_el
1 drag_and_drop(self, origin_el, destination_el) # Usage: driver.drag_and_drop(el1,el2)
模擬手指點選(最多五個手指),可設定按住時間長度(毫秒)
1 tap(self, positions, duration=None) # Usage: driver.tap([(x,y),(x1,y1),(x2,y2)],500)
從A點滑動至B點,滑動時間為毫秒
1 swipe(self, start_x, start_y, end_x, end_y, duration=None) # Usage: driver.swipe(x1,y1,x2,y2,500)
按住A點後快速滑動至B點
1 flick(self, start_x, start_y, end_x, end_y) # Usage: driver.flick(100, 100, 100, 400)
在元素上執行模擬雙指捏(縮小操作)
1 pinch(self, element=None, percent=200, steps=50) # Usage: driver.pinch(element)
在元素上執行放大操作
1 zoom(self, element=None, percent=200, steps=50) # Usage: driver.zoom(element)
重置應用(類似刪除應用資料)
1 reset(self) # Usage: driver.reset()
隱藏鍵盤,iOS使用key_name隱藏,安卓不使用引數
1 hide_keyboard(self, key_name=None, key=None, strategy=None) # Usage: driver.hide_keyboard()
傳送按鍵碼(安卓僅有),按鍵碼可以上網址中找到
1 keyevent(self, keycode, metastate=None) # Usage: driver.keyevent('4')
傳送按鍵碼(安卓僅有),按鍵碼可以上網址中找到
1 press_keycode(self, keycode, metastate=None) # Usage: driver.press_keycode('4')
傳送一個長按的按鍵碼(長按某鍵)
1 long_press_keycode(self, keycode, metastate=None) # Usage: driver.long_press_keycode(4)
獲取當前的activity
1 current_activity(self) # Usage: print(driver.current_activity)
等待指定的activity出現直到超時,interval為掃描間隔1秒;即每隔幾秒獲取一次當前的activity;返回的True 或 False
1 wait_activity(self, activity, timeout, interval=1) # Usage: driver.wait_activity('.activity.xxx',5,2)
後臺執行app多少秒
1 background_app(self, seconds) # Usage: driver.background_app(5) 置後臺5秒後再執行
檢查app是否有安裝
1 is_app_installed(self, bundle_id) # Usage: driver.is_app_installed("com.xxxx")
安裝app,app_path為安裝包路徑
1 install_app(self, app_path) # Usage: driver.install_app(app_path)
刪除app
1 remove_app(self, app_id) # Usage: driver.remove_app("com.xxx.")
啟動app
1 launch_app(self) # Usage: driver.launch_app()
關閉app
1 close_app(self) # Usage: driver.close_app()
在測試過程中開啟任意活動。如果活動屬於另一個應用程式,該應用程式的啟動和活動被開啟。
1 start_activity(self, app_package, app_activity, **opts) # Usage: driver.start_activity(app_package, app_activity)
搖一搖手機
1 shake(self) # Usage: driver.shake()
打系統通知欄(僅支援API 18 以上的安卓系統)
1 open_notifications(self) # Usage: driver.open_notifications()
返回網路型別 數值
1 network_connection(self) # Usage: driver.network_connection
設定網路型別
1 set_network_connection(self, connectionType) # Usage: dr.set_network_connection(ConnectionType.WIFI_ONLY) //from appium.webdriver.connectiontype import ConnectionType
開啟安卓裝置上的位置定位設定
1 toggle_location_services(self) # Usage: driver.toggle_location_services()
設定裝置的經緯度
1 set_location(self, latitude, longitude, altitude) # Usage: driver.set_location(緯度,經度,高度)

安卓輸入法操作

返回安卓裝置可用的輸入法
1 available_ime_engines(self) # Usage: print(driver.available_ime_engines)
檢查裝置是否有輸入法服務活動。返回真/假。
1 is_ime_active(self) # Usage: print(driver.is_ime_active())
啟用安卓裝置中的指定輸入法,裝置可用輸入法可以從“available_ime_engines”獲取
1 activate_ime_engine(self, engine) # Usage: driver.activate_ime_engine(“com.android.inputmethod.latin/.LatinIME”)
關閉安卓裝置當前的輸入法
1 deactivate_ime_engine(self) # Usage: driver.deactivate_ime_engine()
返回當前輸入法的包名
1 active_ime_engine(self) # Usage: driver.active_ime_engine