Appium Python API 全集,可以查看所有的帮助文档
contexts(self):
Returns the contexts within the current session.
#返回当前会话中的上下文,使用后可以识别 H5 页面的控件
:Usage:
driver.contexts
用法 driver.contexts
current_context(self):
Returns the current context of the current session.
#返回当前会话的当前上下文
:Usage:
driver.current_context
用法 driver. current_context
context(self):
Returns the current context of the current session.
#返回当前会话的当前上下文。
:Usage:
driver.context
用法 driver. Context
find_element_by_ios_uiautomation(self, uia_string):
Finds an element by uiautomation in iOS.
#通过 iOS uiautomation 查找元素
:Args:
-uia_string - The element name in the iOS UIAutomation library
:Usage:
driver.find_element_by_ios_uiautomation('.elements()[1 ].cells()[2]')
用法 dr. find_element_by_ios_uiautomation(‘elements’)
find_element_by_accessibility_id(self, id):
Finds an element by accessibility id.
#通过 accessibility id 查找元素
:Args:
-d - a string corresponding to a recursive element search using the
-Id/Name that the native Accessibility options utilize
:Usage:
driver.find_element_by_accessibility_id()
用法 driver.find_element_by_accessibility_id(‘id’)
tap(self, positions, duration=None):
Taps on an particular place with up to five fingers, holding for a certain time
#模拟手指点击(最多五个手指),可设置按住时间长度(毫秒)
:Args: - positions
- an array of tuples representing the x/y coordinates of
the fingers to tap. Length can be up to five.
- duration - (optional) length of time to tap, in ms :Usage:
driver.tap([(100, 20), (100, 60), (100, 100)], 500)
用法 driver.tap([(x,y),(x1,y1)],500)
drag_and_drop(self, origin_el, destination_el):
Drag the origin element to the destination element
#将元素 origin_el 拖到目标元素 destination_el
:Args:
-originEl - the element to drag
-destinationEl - the element to drag to
用法 driver.drag_and_drop(el1,el2)
tap(self, positions, duration=None):
Taps on an particular place with up to five fingers, holding for a certain time
#模拟手指点击(最多五个手指),可设置按住时间长度(毫秒)
:Args: - positions
- an array of tuples representing the x/y coordinates of
the fingers to tap. Length can be up to five.
- duration - (optional) length of time to tap, in ms :Usage:
driver.tap([(100, 20), (100, 60), (100, 100)], 500)
用法 driver.tap([(x,y),(x1,y1)],500)
swipe(self, start_x, start_y, end_x, end_y, duration=None):
Swipe from one point to another point, for an optional duration.
#从 A 点滑动至 B 点,滑动时间为毫秒
:Args:
- start_x - x-coordinate at which to start
- start_y - y-coordinate at which to start
- end_x - x-coordinate at which to stop
- end_y - y-coordinate at which to stop
- duration - (optional) time to take the swipe, in ms. :Usage: driver.swipe(100, 100, 100, 400)
用法 driver.swipe(x1,y1,x2,y2,500)
flick(self, start_x, start_y, end_x, end_y):
Flick from one point to another point.
#按住 A 点后快速滑动至 B 点
:Args:
- start_x - x-coordinate at which to start
- start_y - y-coordinate at which to start
- end_x - x-coordinate at which to stop
- end_y - y-coordinate at which to stop
:Usage:
driver.flick(100, 100, 100, 400)
用法 driver.flick(x1,y1,x2,y2)
pinch(self, element=None, percent=200, steps=50):
Pinch on an element a certain amount
#在元素上执行模拟双指捏(缩小操作)
:Args:
- element - the element to pinch
- percent - (optional) amount to pinch. Defaults to 200%
- steps - (optional) number of steps in the pinch action
:Usage:
driver.pinch(element)
用法 driver.pinch(element)
zoom(self, element=None, percent=200, steps=50):
Zooms in on an element a certain amount
#在元素上执行放大操作
:Args:
- element - the element to zoom - percent
- (optional) amount to zoom. Defaults to 200%
- steps - (optional) number of steps in the zoom action :Usage:
driver.zoom(element)
用法 driver.zoom(element)
reset(self):
Resets the current application on the device.
重置应用(类似删除应用数据)
用法driver.reset()
hide_keyboard(self, key_name=None, key=None, strategy=None):
Hides the software keyboard on the device. In iOS, use `key_name` to press a particular key, or `strategy`. In Android, no parameters are used.
#隐藏键盘,iOS 使用 key_name 隐藏,安卓不使用参数
:Args:
- key_name - key to press
- strategy - strategy for closing the keyboard (e.g., `tapOutside`)
driver.hide_keyboard()
eyevent(self, keycode, metastate=None):
Sends a keycode to the device. Android only. Possible keycodes can be found in http://developer.android.com/reference/android/view/KeyEvent.html.
#发送按键码(安卓仅有),按键码可以上网址中找到
:Args:
- keycode - the keycode to be sent to the device
- - metastate - meta information about the keycode being sent 用法 dr.keyevent(‘4’)
press_keycode(self, keycode, metastate=None):
Sends a keycode to the device. Android only. Possible keycodes can be found in http://developer.android.com/reference/android/view/KeyEvent.html.
# 发送按键码(安卓仅有),按键码可以上网址中找到
:Args:
- keycode - the keycode to be sent to the device
- metastate - meta information about the keycode being sent 用法 driver.press_ keycode(‘4’)
# dr.keyevent(‘4’)与 driver.press_ keycode(‘4’) 功能实现上一样的,都是按了返回键
long_press_keycode(self, keycode, metastate=None):
Sends a long press of keycode to the device. Android only. Possible keycodes can be found in http://developer.android.com/reference/android/view/KeyEvent.html.
#发送一个长按的按键码(长按某键)
:Args:
- keycode - the keycode to be sent to the device
- metastate - meta information about the keycode being sent
用法 driver.long_press_keycode(‘4’)
current_activity(self):
Retrieves the current activity on the device.
#获取当前的 activity
用法 print(driver.current_activity())
wait_activity(self, activity, timeout, interval=1):
Wait for an activity: block until target activity presents or time out.
This is an Android-only method.
# 等待指定的 activity 出现直到超时,interval 为扫描间隔 1 秒 即每隔几秒获取一次当前的 activity
返回的 True or False
:Agrs:
- activity - target activity
- timeout - max wait time, in seconds
- interval - sleep interval between retries, in seconds
用法 driver.wait_activity(‘.activity.xxx’,5,2)
background_app(self, seconds):
Puts the application in the background on the device for a certain duration.
#后台运行 app 多少秒
:Args:
- seconds - the duration for the application to remain in the background
用法 driver.background_app(5) 置后台 5 秒后再运行
is_app_installed(self, bundle_id):
Checks whether the application specified by `bundle_id` is installed on the device.
# 检查 app 是否有安装
返回 True or False
:Args:
- bundle_id - the id of the application to query
用法 driver.is_app_installed(“com.xxxx”)
install_app(self, app_path):
Install the application found at `app_path` on the device.
#安装 app,app_path 为安装包路径
:Args:
- app_path - the local or remote path to the application to install
用法 driver.install_app(app_path)
remove_app(self, app_id):
Remove the specified application from the device.
#删除 app
:Args:
- app_id - the application id to be removed
用法 driver.remove_app(“com.xxx.”)
launch_app(self):
Start on the device the application specified in the desired capabilities.
# 启动 app
用法 driver.launch_app()
close_app(self):
Stop the running application, specified in the desired capabilities, on the device.
#关闭 app 用法
driver.close_app()
#需要注意的是启动和关闭 app 运行好像会出错
start_activity(self, app_package, app_activity, **opts):
Opens an arbitrary activity during a test. If the activity belongs to
another application, that application is started and the activity is opened.
This is an Android-only method.
#在测试过程中打开任意活动。如果活动属于另一个应用程序,该应用程序的启动和活动被打开。这是一个安卓的方法
:Args:
- app_package - The package containing the activity to start.
- app_activity - The activity to start.
- app_wait_package - Begin automation after this package starts (optional).
- app_wait_activity - Begin automation after this activity starts (optional).
- intent_action - Intent to start (optional).
- intent_category - Intent category to start (optional).
- intent_flags - Flags to send to the intent (optional).
- optional_intent_arguments
- Optional arguments to the intent (optional).
- stop_app_on_reset - Should the app be stopped on reset (optional)
用法 driver.start_activity(app_package, app_activity)
lock(self, seconds):
Lock the device for a certain period of time. iOS only.
#锁屏一段时间 iOS 专有
:Args:
- the duration to lock the device, in seconds
用法 driver.lock()
shake(self):
Shake the device.
#摇一摇手机
用法 driver.shake()
open_notifications(self):
Open notification shade in Android (API Level 18 and above)
#打系统通知栏(仅支持 API 18 以上的安卓系统)
用法 driver.open_notifications()
network_connection(self):
Returns an integer bitmask specifying the network connection type.
Android only.
#返回网络类型数值
Possible values are available through the enumeration `appium.webdriver.ConnectionType`
用法 driver.network_connection
set_network_connection(self, connectionType):
Sets the network connection type. Android only.
Possible values:
Value (Alias) | Data | Wifi | Airplane Mode
-------------------------------------------------
0 (None) | 0 | 0 | 0
1 (Airplane Mode) | 0 | 0 | 1
2 (Wifi only) | 0 | 1 | 0
4 (Data only) | 1 | 0 | 0
6 (All network on) | 1 | 1 | 0
These are available through the enumeration appium.webdriver.ConnectionType`
#设置网络类型
:Args:
- connectionType - a member of the enum appium.webdriver.ConnectionType
用法 先加载 from appium.webdriver.connectiontype import ConnectionType
dr.set_network_connection(ConnectionType.WIFI_ONLY)
ConnectionType 的类型有
NO_CONNECTION = 0
AIRPLANE_MODE = 1
WIFI_ONLY = 2
DATA_ONLY = 4
ALL_NETWORK_ON = 6
available_ime_engines(self):
Get the available input methods for an Android device. Package and activity are returned (e.g.,
['com.android.inputmethod.latin/.LatinIME'])
Android only.
#返回安卓设备可用的输入法
用法 print(driver.available_ime_engines)
s_ime_active(self):
Checks whether the device has IME service active.
Returns True/False.
Android only.
#检查设备是否有输入法服务活动。返回真/假 .(仅安卓)
用法 print(driver.is_ime_active())
activate_ime_engine(self, engine):
Activates the given IME engine on the device.
Android only.
#激活安卓设备中的指定输入法,设备可用输入法可以从 “available_ime_engines”获取
:Args:
- engine - the package and activity of the IME engine to activate (e.g.,
'com.android.inputmethod.latin/.LatinIME')
用法driver.activate_ime_engine(“com.android.inputmethod.latin/.LatinIME ”)
deactivate_ime_engine(self):
Deactivates the currently active IME engine on the device.
Android only.
#关闭安卓设备当前的输入法
用法 driver.deactivate_ime_engine()
active_ime_engine(self):
Returns the activity and package of the currently active IME engine (e.g.,
'com.android.inputmethod.latin/.LatinIME').
Android only.
#返回当前输入法的包名
用法 driver.active_ime_engine
toggle_location_services(self):
Toggle the location services on the device. Android only.
#打开安卓设备上的位置定位设置
用法 driver.toggle_location_services()
set_location(self, latitude, longitude, altitude):
Set the location of the device
设置设备的经纬度
:Args:
- latitude 纬度 - String or numeric value between -90.0 and 90.00
- longitude 经度 - String or numeric value between -180.0 and 180.0
- altitude 海拔高度- String or numeric value
用法 driver.set_location(纬度,经度,高度)
tag_name(self):
This element's ``tagName`` property.
#返回元素的 tagName 属性
#经实践返回的是 class name
用法 element.tag_name()
text(self):
The text of the element.
#返回元素的文本值
用法 element.text()
click(self):
Clicks the element.
#点击元素
用法 element.click()
submit(self):
Submits a form.
#提交表单
#用法 暂无(记得好像有这样一个API,不常用给忘了..)
clear(self):
Clears the text if it's a text entry element.
#清除输入的内容
用法 element.clear()
get_attribute(self, name):
Gets the given attribute or property of the element.
# 1、获取 content-desc 的方法为 get_attribute("name") ,而且还不能保证返 回的一定是 content-desc (content-desc 为空时会返回 text 属性值)
# 2、get_attribute 方法不是我们在 uiautomatorviewer 看到的所有属性都能获 取的(此处的名称均为使用 get_attribute 时使用的属性名称):
可获取的:
字符串类型:
name(返回 content-desc 或 text)
text(返回 text)
className( 返 回 class, 只 有 API=>18 才 能 支 持 )
resourceId(返回 resource-id,只有 API=>18 才能支持)
This method will first try to return the value of a property with the
given name. If a property with that name doesn't exist, it returns the
value of the attribute with the same name. If there's no attribute with
that name, ``None`` is returned.
Values which are considered truthy, that is equals "true" or "false",
are returned as booleans. All other non-``None`` values are returned
as strings. For attributes or properties which do not exist, ``None``
is returned.
:Args:
- name - Name of the attribute/property to retrieve.
#Example:
# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
#用法
is_selected(self):
Returns whether the element is selected.
Can be used to check if a checkbox or radio button is selected.
#返回元素是否选择。
#可以用来检查一个复选框或单选按钮被选中。
用法 element.is_slected()
is_enabled(self):
Returns whether the element is enabled.
#返回元素是否可用 True of False
用法 element.is_enabled()
find_element_by_id(self, id_):
Finds element within this element's children by ID.
#通过元素的 ID 定位元素
:Args:
- id_ - ID of child element to locate.
用法 driver. find_element_by_id(“id”)
find_elements_by_id(self, id_):
Finds a list of elements within this element's children by ID.
#通过元素 ID 定位,含有该属性的所有元素
:Args:
- id_ - Id of child element to find.
用法 driver. find_elements_by_id(“id”)
find_element_by_name(self, name):
Finds element within this element's children by name.
#通过元素 Name 定位(元素的名称属性 text)
:Args:
- name - name property of the element to find.
用法 driver.find_element_by_name(“name”)
find_elements_by_name(self, name):
Finds a list of elements within this element's children by name.
#通过元素 Name 定位(元素的名称属性 text),含有该属性的所有元素
:Args:
- name - name property to search for.
用法 driver.find_element_by_name(“name”)
find_element_by_link_text(self, link_text):
Finds element within this element's children by visible link text.
#通过元素可见链接文本定位
:Args:
- link_text - Link text string to search for.
用法 driver.find_element_by_link_text(“text”)
find_element_by_link_text(self, link_text):
Finds a list of elements within this element's children by visible link text
#通过元素可见链接文本定位,含有该属性的所有元素
:Args:
- link_text - Link text string to search for.
用法 driver.find_elements_by_link_text(“text”)
find_element_by_partial_link_text(self, link_text):
Finds element within this element's children by partially visible link text.
#通过元素部分可见链接文本定位
:Args:
- link_text - Link text string to search for.
用法driver. find_element_by_partial_link_text(“text”)
find_elements_by_partial_link_text(self, link_text):
Finds a list of elements within this element's children by link text.
#通过元素部分可见链接文本定位,含有该属性的所有元素
:Args:
- link_text - Link text string to search for.
用法:driver. find_elements_by_partial_link_text(“text”)
find_element_by_tag_name(self, name):
Finds element within this element's children by tag name.
#通过查找 html 的标签名称定位元素
:Args:
- name - name of html tag (eg: h1, a, span)
用法 driver.find_element_by_tag_name(“name”)
find_elements_by_tag_name(self, name):
Finds a list of elements within this element's children by tag name.
#通过查找 html 的标签名称定位所有元素
:Args:
-name - name of html tag (eg: h1, a, span)
用法 driver.find_elements_by_tag_name(“name”)
find_element_by_xpath(self, xpath):
Finds element by xpath.
#通过 Xpath 定位元素
:Args: xpath
- xpath of element to
locate. "//input[@class='myelement']"
Note: The base path will be relative to this element's location.
This will select the first link under this element.
::
myelement.find_elements_by_xpath(".//a")
However, this will select the first link on the page.
:: myelement.find_elements_by_xpath("//a")
用法 find_element_by_xpath(“//*”)
find_elements_by_xpath(self, xpath):
Finds elements within the element by xpath.
#通过 Xpath 定位元素
:Args:
- xpath - xpath locator string.
Note: The base path will be relative to this element's location.
This will select all links under this element.
::
myelement.find_elements_by_xpath(".//a")
However, this will select all links in the page itself.
::
myelement.find_elements_by_xpath("//a")
用法 find_elements_by_xpath(“//*”)
find_element_by_class_name(self, name):
Finds element within this element's children by class name.
#通过元素 class name 属性定位元素
:Args:
- name - class name to search for.
用法 driver.find_element_by_class_name(“android.widget.LinearLayout”)
find_elements_by_class_name(self, name):
Finds a list of elements within this element's children by class name.
#通过元素 class name 属性定位所有含有该属性的元素
:Args:
- name - class name to search for.
用法 driver. find_elements_by_class_name(“android.widget.LinearLayout”)
find_element_by_css_selector(self, css_selector):
Finds element within this element's children by CSS selector.
#通过 CSS 选择器定位元素
:Args:
- css_selector - CSS selctor string, ex: 'a.nav#home'
send_keys(self, *value):
Simulates typing into the element.
在元素中模拟输入(开启 appium 自带的输入法并配置了 appium 输入法 后,可以输入中英文)
:Args:
- value - A string for typing, or setting form fields. For setting
file inputs, this could be a local file path.
Use this to send simple key events or to fill out form fields::
form_textfield =
driver.find_element_by_name('username')
form_textfield.send_keys("admin")
This can also be used to set file inputs.
::
file_input = driver.find_element_by_name('profilePic')
file_input.send_keys("path/to/profilepic.gif")
# Generally it's better to wrap the file path in one of the methods
# in os.path to return the actual path to support cross OS testing.
#
file_input.send_keys(os.path.abspath("path/to/profilepic.gif"))
用法 driver.element.send_keys(“中英”)
is_displayed(self):
Whether the element is visible to a user.
#此元素用户是否可见
#简单地说就是隐藏元素和被控件挡住无法操作的元素(仅限 Selenium,appium 是否实现了类似功能不是太确定)这一项都会返回 False
用法 driver.element.is_displayed()
size(self):
The size of the element.
#获取元素的大小(高和宽)
new_size["height"] = size["height"]
new_size["width"] = size["width"]
用法 driver.element.size
value_of_css_property(self, property_name):
The value of a CSS property.
#CSS 属性
用法 用的少,但是有
location(self):
The location of the element in the renderable canvas.
#获取元素左上角的坐标
用法 driver.element.location
'''返回 element 的x 坐标, int 类型'''
driver.element.location.get('x') '''
返 回 element 的 y 坐标, int 类型''' driver.element.location.get('y')
rect(self):
A dictionary with the size and location of the element.
#元素的大小和位置的字典
screenshot_as_base64(self):
Gets the screenshot of the current element as a base64 encoded string.
#获取当前元素的截图为 Base64 编码的字符串
:Usage:
img_b64 = element.screenshot_as_base64
execute_script(self, script, *args):
Synchronously Executes JavaScript in the current window/frame.
#在当前窗口/框架(特指 Html 的 iframe )同步执行 javascript 代码
#你可 以理解为如果这段代码是睡眠 5 秒,这五秒内主线程的 javascript 不会执行
:Args:
- script: The JavaScript to execute.
- \*args: Any applicable arguments for your JavaScript.
:Usage:
driver.execute_script('document.title')
execute_async_script(self, script, *args):
Asynchronously Executes JavaScript in the current window/frame.
#插入 javascript 代码
#只是这个是异步的,也就是如果你的代码是睡眠5秒,
#那么你只是自己在睡,页面的其他 javascript 代码还是照常执行
:Args:
- script: The JavaScript to execute.
- \*args: Any applicable arguments for your JavaScript.
:Usage:
driver.execute_async_script('document.title')
current_url(self):
Gets the URL of the current page.
#获取当前页面的网址
:Usage:
driver.current_url
用法 driver.current_url
page_source(self):
Gets the source of the current page.
#获取当前页面的源
:Usage:
用法 driver.page_source
close(self):
Closes the current window.
#关闭当前窗口
:Usage:
driver.close()
quit(self):
Quits the driver and closes every associated window.
#退出脚本运行并关闭每个相关的窗口连接
:Usage:
driver.quit()