Appium的常用API整理
1.contexts(self):
Returns the contexts within the current session.
返回当前会话中的上下文,使用后可以识别H5页面的控件
用法
driver.contexts
2. current_context(self):
Returns the current context of the current session.
返回当前会话的当前上下文
用法
driver. current_context
3. context(self):
Returns the current context of the current session. 返回当前会话的当前上下文。
用法
driver. Context
4. find_element_by_ios_uiautomation(self, uia_string):
Finds an element by uiautomation in iOS.
通过iOS uiautomation查找元素
用法
dr. find_element_by_ios_uiautomation(‘elements’)
5. find_element_by_accessibility_id(self, id):
Finds an element by accessibility id.
通过accessibility id查找元素
用法
driver.find_element_by_accessibility_id(‘id’)
6.scroll(self, origin_el, destination_el):
Scrolls from one element to another
从元素origin_el滚动至元素destination_el
用法
driver.scroll(el1,el2)
7. drag_and_drop(self, origin_el, destination_el):
Drag the origin element to the destination element
将元素origin_el拖到目标元素destination_el
用法
driver.drag_and_drop(el1,el2)
8.tap(self, positions, duration=None):
Taps on an particular place with up to five fingers, holding for a certain time
模拟手指点击(最多五个手指),可设置按住时间长度(毫秒)Usage:
driver.tap([(100, 20), (100, 60), (100, 100)], 500)
用法
driver.tap([(x,y),(x1,y1)],500)
9. 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点,滑动时间为毫秒
Usage:
driver.swipe(100, 100, 100, 400)
用法
driver.swipe(x1,y1,x2,y2,500)
10.flick(self, start_x, start_y, end_x, end_y):
Flick from one point to another point.
按住A点后快速滑动至B点
Usage:
driver.flick(100, 100, 100, 400)
用法
driver.flick(x1,y1,x2,y2)
11.pinch(self, element=None, percent=200, steps=50):
Pinch on an element a certain amount
在元素上执行模拟双指捏(缩小操作)
用法
driver.pinch(element)
12.zoom(self, element=None, percent=200, steps=50):
Zooms in on an element a certain amount
在元素上执行放大操作
Usage:
driver.zoom(element)
用法
driver.zoom(element)
13.reset(self):
Resets the current application on the device.
重置应用(类似删除应用数据)
用法
driver.reset()
14. 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隐藏,安卓不使用参数
用法
driver.hide_keyboard()
15. keyevent(self, keycode, metastate=None):
Sends a keycode to the device. Android only.
发送按键码(安卓仅有)
用法
dr.keyevent(‘4’)
16. 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.
发送按键码(安卓仅有),按键码可以上网址中找到
用法
driver.press_ keycode(‘4’)
dr.keyevent(‘4’)与driver.press_ keycode(‘4’) 功能实现上一样的,都是按了返回键
17. 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.
发送一个长按的按键码(长按某键) 详细的按键代码见这里 http://developer.android.com/reference/android/view/KeyEvent.html.
用法
driver.long_press_keycode(4)
18.current_activity(self):
Retrieves the current activity on the device.
获取当前的activity
用法
print(driver.current_activity)
19. 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 或 False
用法
driver.wait_activity(‘.activity.xxx’,5,2)
20. background_app(self, seconds):
Puts the application in the background on the device for a certain duration.
后台运行app多少秒
用法
driver.background_app(5) 置后台5秒后再运行
21.is_app_installed(self, bundle_id):
Checks whether the application specified by bundle_id
is installed on the device.
检查app是否有安装返回
用法
driver.is_app_installed(“com.xxxx”)
22.install_app(self, app_path):
Install the application found at app_path
on the device.
安装app,app_path为安装包路径
用法
driver.install_app(app_path)
23.remove_app(self, app_id):
Remove the specified application from the device.
删除app
用法
driver.remove_app(“com.xxx.”)
24.launch_app(self):
Start on the device the application specified in the desired capabilities.
启动app
用法
driver.launch_app()
25.close_app(self):
Stop the running application, specified in the desired capabilities, on the device.
关闭app
用法
driver.close_app()启动和关闭app运行好像会出错
26.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.
在测试过程中打开任意活动。如果活动属于另一个应用程序,该应用程序的启动和活动被打开。这是一个安卓的方法
用法
driver.start_activity(app_package, app_activity)
27.lock(self, seconds):
Lock the device for a certain period of time. iOS only.
锁屏一段时间 iOS专有
用法
driver.lock()
28.shake(self):
Shake the device.
摇一摇手机用法
driver.shake()
29.open_notifications(self):
Open notification shade in Android (API Level 18 and above)
打系统通知栏(仅支持API 18 以上的安卓系统)
用法
driver.open_notifications()
30.network_connection(self):
Returns an integer bitmask specifying the network connection type. Android only.
返回网络类型 数值
用法
driver.network_connection
31. 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 |
设置网络类型
用法
先加载from appium.webdriver.connectiontype import ConnectionTypedr.set_network_connection(ConnectionType.WIFI_ONLY)
ConnectionType的类型有
NO_CONNECTION = 0
AIRPLANE_MODE = 1
WIFI_ONLY = 2
DATA_ONLY = 4
ALL_NETWORK_ON = 6
32. 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)
33.is_ime_active(self):
Checks whether the device has IME service active. Returns True/False. Android only.
检查设备是否有输入法服务活动。返回真/假。安卓
用法
print(driver.is_ime_active())
34.activate_ime_engine(self, engine):
Activates the given IME engine on the device. Android only.
激活安卓设备中的指定输入法,设备可用输入法可以从“available_ime_engines”获取 :
用法
driver.activate_ime_engine(“com.android.inputmethod.latin/.LatinIME”)
35.deactivate_ime_engine(self):
Deactivates the currently active IME engine on the device. Android only.
关闭安卓设备当前的输入法
用法
driver.deactivate_ime_engine()
36.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
37. toggle_location_services(self):
Toggle the location services on the device. Android only.
打开安卓设备上的位置定位设置
用法
driver.toggle_location_services()
38.set_location(self, latitude, longitude, altitude):
Set the location of the device
设置设备的经纬度
用法
driver.set_location(纬度,经度,高度)
39.tag_name(self):
This element's tagName
property.
返回元素的tagName属性经实践返回的是class name
用法
element.tag_name()
40.text(self):
The text of the element.
返回元素的文本值
用法
element.text
41.click(self):
Clicks the element.
点击元素用法
element.click()
42.submit(self):
Submits a form.
提交表单用法 暂无
43.clear(self):
Clears the text if it's a text entry element.
清除输入的内容
用法
element.clear()
44.get_attribute(self, name):
详见@chenhengjie123 的超级链接
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.
Example:: # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")
用法 暂无
45.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()
46.is_enabled(self):
Returns whether the element is enabled.
返回元素是否可用True of False
用法
element.is_enabled()
47.find_element_by_id(self, id_):
Finds element within this element's children by ID.
通过元素的ID定位元素
用法
driver. find_element_by_id(“id”)
48. find_elements_by_id(self, id_):
Finds a list of elements within this element's children by ID.
通过元素ID定位,含有该属性的所有元素
用法
driver. find_elements_by_id(“id”)
49. ffind_element_by_name(self, name):1.5以上的版本已弃用
Finds element within this element's children by name.
通过元素Name定位(元素的名称属性text)
用法
driver.find_element_by_name(“name”)
替代方法
driver.find_element_by_xpath("//*[@text='我的']")
50. find_elements_by_name(self, name):
Finds a list of elements within this element's children by name.
通过元素Name定位(元素的名称属性text),含有该属性的所有元素 用法
driver.find_element_by_name(“name”)
51.find_element_by_link_text(self, link_text):
Finds element within this element's children by visible link text.
通过元素可见链接文本定位
用法
driver.find_element_by_link_text(“text”)
52. find_element_by_link_text(self, link_text):
Finds a list of elements within this element's children by visible link text
通过元素可见链接文本定位,含有该属性的所有元素
用法
driver.find_elements_by_link_text(“text”)
53. find_element_by_partial_link_text(self, link_text):
Finds element within this element's children by partially visible link text.
通过元素部分可见链接文本定位
driver. find_element_by_partial_link_text(“text”)
54. find_elements_by_partial_link_text(self, link_text):
Finds a list of elements within this element's children by link text.
通过元素部分可见链接文本定位,含有该属性的所有元素
driver. find_elements_by_partial_link_text(“text”)
55. find_element_by_tag_name(self, name):
Finds element within this element's children by tag name.
通过查找html的标签名称定位元素
用法
driver.find_element_by_tag_name(“name”)
56. find_elements_by_tag_name(self, name):
Finds a list of elements within this element's children by tag name.
通过查找html的标签名称定位所有元素
用法
driver.find_elements_by_tag_name(“name”)
**57. find_element_by_xpath(self, xpath):
Finds element by xpath. **
通过Xpath定位元素,详细方法可参阅http://www.w3school.com.cn/xpath/
用法
find_element_by_xpath(“//*”)
58.find_elements_by_xpath(self, xpath):
Finds elements within the element by xpath.
用法
find_elements_by_xpath(“//*”)
59. find_element_by_class_name(self, name):
Finds element within this element's children by class name.
通过元素class name属性定位元素
用法
driver. find_element_by_class_name(“android.widget.LinearLayout”)
60. find_elements_by_class_name(self, name):
Finds a list of elements within this element's children by class name.
通过元素class name属性定位所有含有该属性的元素
用法
driver. find_elements_by_class_name(“android.widget.LinearLayout”)
61. find_element_by_css_selector(self, css_selector):
Finds element within this element's children by CSS selector.
通过CSS选择器定位元素
*62.send_keys(self, value):
Simulates typing into the element.
在元素中模拟输入(开启appium自带的输入法并配置了appium输入法后,可以输入中英文)
用法
driver.element.send_keys(“中英”)
63.is_displayed(self):
Whether the element is visible to a user.
此元素用户是否可见。简单地说就是隐藏元素和被控件挡住无法操作的元素(仅限 Selenium,appium是否实现了类似功能不是太确定)这一项都会返回 False
用法
driver.element.is_displayed()
64. location_once_scrolled_into_view(self):
"""THIS PROPERTY MAY CHANGE WITHOUT WARNING. Use this to discover where on the screen an element is so that we can click it. This method should cause the element to be scrolled into view. Returns the top lefthand corner location on the screen, or None
if the element is not visible.
暂不知道用法 """
65.size(self):
The size of the element.
获取元素的大小(高和宽)
用法
driver.element.size
66. value_of_css_property(self, property_name):
The value of a CSS property.
CSS属性用法
67.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')
68.rect(self):
A dictionary with the size and location of the element.
元素的大小和位置的字典
69. screenshot_as_base64(self):
Gets the screenshot of the current window as a base64 encoded string which is useful in embedded images in HTML.
获取当前元素的截图为Base64编码的字符串,在HTML中嵌入的图像 :
Usage:
img_b64 = element.get_screenshot_as_base64
*70.execute_script(self, script, args):
Synchronously Executes JavaScript in the current window/frame.
在当前窗口/框架(特指 Html 的 iframe )同步执行 javascript 代码。你可以理解为如果这段代码是睡眠5秒,这五秒内主线程的 javascript 不会执行 :
Usage:
driver.execute_script('document.title')
*71.execute_async_script(self, script, args):
Asynchronously Executes JavaScript in the current window/frame.插入 javascript 代码,只是这个是异步的,也就是如果你的代码是睡眠5秒,那么你只是自己在睡,页面的其他 javascript 代码还是照常执行
Usage:
driver.execute_async_script('document.title')
72.current_url(self):
Gets the URL of the current page.
获取当前页面的网址。
用法
driver.current_url
73. page_source(self):
Gets the source of the current page.
获取当前页面的源。
:Usage:
driver.page_source
74.close(self):
Closes the current window.
关闭当前窗口:
Usage:
driver.close()
75.quit(self):
Quits the driver and closes every associated window.
退出脚本运行并关闭每个相关的窗口连接:
Usage:
driver.quit()
76.get_screenshot_as_file(self, filename):
Gets the screenshot of the current window. Returns False if there is any IOError, else returns True. Use full paths in your filename.
截取当前窗口的截图,如果有写入错误会返回False,其它返回Truefilename 使用绝对路径
:Usage:
driver.get_screenshot_as_file('c:/foo.png')
77.get_window_size(self, filename):
Gets the width and height of the current window.
获取当前屏幕的分辨率(长和宽)
Usage:
driver.get_window_size()