当前位置: 首页 > news >正文

【appium】appium自动化入门之API(下)——两万字API长文,建议收藏

目录


Appium API

前言
1.contexts (返回当前会话中的上下文,使用后可以识别 H5 页面的控件)
2.current_context (返回当前会话的当前上下文 )
3. context (返回当前会话的当前上下文)
4.find_element_by_ios_uiautomation(通过 iOS uiautomation 查找元素)
5.find_element_by_accessibility_id(通过 accessibility id 查找元素 )
6.scroll (从元素 origin_el 滚动至元素 destination_el)
7.drag_and_drop(将元素 origin_el 拖到目标元素 destination_el )
8.tap (模拟手指点击(最多五个手指),可设置按住时间长度(毫秒))
9.swipe (从 A 点滑动至 B 点,滑动时间为毫秒 )
10.flick (按住 A 点后快速滑动至 B 点 )
11.pinch (在元素上执行模拟双指捏(缩小操作))
12.zoom (在元素上执行放大操作)
13.reset (重置应用(类似删除应用数据) )
14 hide_keyboard (隐藏键盘,iOS 使用 key_name 隐藏,安卓不使用参数 )
15 keyevent (发送按键码(安卓仅有),按键码可以上网址中找到)
16 press_keycode (发送按键码(安卓仅有),按键码可以上网址中找到 )
17.long_press_keycode(发送一个长按的按键码(长按某键))
18.current_activity (获取当前的 activity )
19.wait_activity(等待指定的 activity 出现直到超时,interval 为扫描间隔 1 秒 即每隔几秒获取一次当前的 activity )
20.background_app (后台运行 app 多少秒 )
21.is_app_installed (检查 app 是否有安装)
22.install_app (安装 app,app_path 为安装包路径)
23.remove_app (删除 app)
24.launch_app(启动 app )
25.close_app (需要注意的是启动和关闭 app 运行好像会出错 )
26.start_activity (在测试过程中打开任意活动。如果活动属于另一个应用程序,该应用程序的启动和活动被打开。这是一个安卓的方法 )
27.lock (锁屏一段时间 iOS 专有)
28.shake (摇一摇手机 )
29.open_notifications (打系统通知栏(仅支持 API 18 以上的安卓系统))
30.network_connection(#返回网络类型数值)
31.set_network_connection (设置网络类型)
32.available_ime_engines(返回安卓设备可用的输入法)
33.is_ime_active i(检查设备是否有输入法服务活动。返回真/假)
34.activate_ime_engine (激活安卓设备中的指定输入法,设备可用输入法可以从 “available_ime_engines”获取)
35.deactivate_ime_engine (关闭安卓设备当前的输入法 )
36.active_ime_engine (返回当前输入法的包名)
37.toggle_location_services (打开安卓设备上的位置定位设置)
38.set_location (设置设备的经纬度 )
39.tag_name(返回元素的 tagName 属性)
40.text(返回元素的文本值 )
41.click (点击元素)
42.submit (提交表单 )
43.clear (清除输入的内容)
44.get_attribute
45.is_selected (返回元素是否选择)
46.is_enabled (返回元素是否可用)
47.find_element_by_id(通过元素的 ID 定位元素)
48.find_elements_by_id(通过元素 ID 定位,含有该属性的所有元素)
49.find_element_by_name (通过元素 Name 定位)
50.find_elements_by_name
51.find_element_by_link_text (通过元素可见链接文本定位)
52.find_elements_by_link_text
53.find_element_by_partial_link_text (通过元素部分可见链接文本定位)
54.find_elements_by_partial_link_text
55.find_element_by_tag_name
56.find_elements_by_tag_name
57.find_element_by_xpath(通过 Xpath 定位元素)
58.find_elements_by_xpath
59.find_element_by_class_name (通过元素 class name 属性定位元素)
60.find_elements_by_class_name (通过元素 class name 属性定位所有含有该属性的元素)
61.find_element_by_css_selector (通过 CSS 选择器定位元素)
62.send_keys(在元素中模拟输入)
63.is_displayed(此元素用户是否可见)
64.size (获取元素的大小)
65.value_of_css_property (CSS 属性)
66.location (获取元素左上角的坐标)
67.rect(元素的大小和位置的字典)
68.screenshot_as_base64 (获取当前元素的截图为 Base64 编码的字符串 )
69.execute_script (同步执行 javascript 代码)
70.execute_async_script (插入 javascript 代码)
71.current_url(获取当前页面的网址 )
72.page_source (获取当前页面的源 )
73.close(关闭当前窗口)
74.quit (退出脚本运行并关闭每个相关的窗口连接)
重要的话
 

Appium API

前言

Appium Python API 全集,可以查看所有的帮助文档

1.contexts (返回当前会话中的上下文,使用后可以识别 H5 页面的控件)

contexts(self): Returns the contexts within the current session. #返回当前会话中的上下文,使用后可以识别 H5 页面的控件:Usage: driver.contexts 
用法 driver.contexts 

2.current_context (返回当前会话的当前上下文 )

current_context(self): Returns the current context of the current session. #返回当前会话的当前上下文 :Usage:driver.current_context 
用法 driver. current_context 

3. context (返回当前会话的当前上下文)

context(self): Returns the current context of the current session. #返回当前会话的当前上下文。 :Usage: driver.context 
用法 driver. Context 

4.find_element_by_ios_uiautomation(通过 iOS uiautomation 查找元素)

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’) 

5.find_element_by_accessibility_id(通过 accessibility id 查找元素 )

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’) 

6.scroll (从元素 origin_el 滚动至元素 destination_el)

 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)

7.drag_and_drop(将元素 origin_el 拖到目标元素 destination_el )

 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) 

8.tap (模拟手指点击(最多五个手指),可设置按住时间长度(毫秒))

 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)

9.swipe (从 A 点滑动至 B 点,滑动时间为毫秒 )

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) 

10.flick (按住 A 点后快速滑动至 B 点 )

 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) 

11.pinch (在元素上执行模拟双指捏(缩小操作))

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) 

12.zoom (在元素上执行放大操作)

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) 

13.reset (重置应用(类似删除应用数据) )

reset(self):
Resets the current application on the device.
重置应用(类似删除应用数据)
用法driver.reset()

14 hide_keyboard (隐藏键盘,iOS 使用 key_name 隐藏,安卓不使用参数 )

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() 

15 keyevent (发送按键码(安卓仅有),按键码可以上网址中找到)

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’)

16 press_keycode (发送按键码(安卓仅有),按键码可以上网址中找到 )

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’) 功能实现上一样的,都是按了返回键

17.long_press_keycode(发送一个长按的按键码(长按某键))

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’) 

18.current_activity (获取当前的 activity )

current_activity(self): 
Retrieves the current activity on the device. 
#获取当前的 activity 
用法 print(driver.current_activity()) 

19.wait_activity(等待指定的 activity 出现直到超时,interval 为扫描间隔 1 秒 即每隔几秒获取一次当前的 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) 

20.background_app (后台运行 app 多少秒 )

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 秒后再运行 

21.is_app_installed (检查 app 是否有安装)

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”) 

22.install_app (安装 app,app_path 为安装包路径)

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)

23.remove_app (删除 app)

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.”) 

24.launch_app(启动 app )

launch_app(self):
Start on the device the application specified in the desired capabilities. # 启动 app 
用法 driver.launch_app() 

25.close_app (需要注意的是启动和关闭 app 运行好像会出错 )

close_app(self): 
Stop the running application, specified in the desired capabilities, on the device. #关闭 app 用法 
driver.close_app() #需要注意的是启动和关闭 app 运行好像会出错 

26.start_activity (在测试过程中打开任意活动。如果活动属于另一个应用程序,该应用程序的启动和活动被打开。这是一个安卓的方法 )

start_activity(self, app_package, app_activity, **opts): 
Opens an arbitrary activity during a test. If the activity belongs toanother 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) 

27.lock (锁屏一段时间 iOS 专有)

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() 

28.shake (摇一摇手机 )

shake(self):
Shake the device. 
#摇一摇手机 
用法 driver.shake()

29.open_notifications (打系统通知栏(仅支持 API 18 以上的安卓系统))

open_notifications(self):
Open notification shade in Android (API Level 18 and above)
#打系统通知栏(仅支持 API 18 以上的安卓系统) 
用法 driver.open_notifications() 

30.network_connection(#返回网络类型数值)

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 

31.set_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 

32.available_ime_engines(返回安卓设备可用的输入法)

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 i(检查设备是否有输入法服务活动。返回真/假)

s_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 (激活安卓设备中的指定输入法,设备可用输入法可以从 “available_ime_engines”获取)

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 ”)

35.deactivate_ime_engine (关闭安卓设备当前的输入法 )

deactivate_ime_engine(self): 
Deactivates the currently active IME engine on the device. Android only. 
#关闭安卓设备当前的输入法 
用法 driver.deactivate_ime_engine()

36.active_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 

37.toggle_location_services (打开安卓设备上的位置定位设置)

toggle_location_services(self): 
Toggle the location services on the device. Android only. 
#打开安卓设备上的位置定位设置 
用法 driver.toggle_location_services() 

38.set_location (设置设备的经纬度 )

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(纬度,经度,高度) 

39.tag_name(返回元素的 tagName 属性)

tag_name(self): 
This element's ``tagName`` property. 
#返回元素的 tagName 属性 
#经实践返回的是 class name 
用法 element.tag_name() 

40.text(返回元素的文本值 )

text(self): 
The text of the element. 
#返回元素的文本值 
用法 element.text() 

41.click (点击元素)

click(self): 
Clicks the element. 
#点击元素 
用法 element.click() 

42.submit (提交表单 )

submit(self): 
Submits a form. 
#提交表单 
#用法 暂无(记得好像有这样一个API,不常用给忘了..)

43.clear (清除输入的内容)

clear(self): 
Clears the text if it's a text entry element. 
#清除输入的内容 
用法 element.clear() 

44.get_attribute

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 returnedas 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") #用法  

45.is_selected (返回元素是否选择)

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 (返回元素是否可用)

is_enabled(self): 
Returns whether the element is enabled.#返回元素是否可用 True of False 
用法 element.is_enabled() 

47.find_element_by_id(通过元素的 ID 定位元素)

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”) 

48.find_elements_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”) 

49.find_element_by_name (通过元素 Name 定位)

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”) 

50.find_elements_by_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”) 

51.find_element_by_link_text (通过元素可见链接文本定位)

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”) 

52.find_elements_by_link_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”) 

53.find_element_by_partial_link_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”) 

54.find_elements_by_partial_link_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”)

55.find_element_by_tag_name

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”)

56.find_elements_by_tag_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”) 

57.find_element_by_xpath(通过 Xpath 定位元素)

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(“//*”) 

58.find_elements_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(“//*”) 

59.find_element_by_class_name (通过元素 class name 属性定位元素)

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”) 

60.find_elements_by_class_name (通过元素 class name 属性定位所有含有该属性的元素)

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”) 

61.find_element_by_css_selector (通过 CSS 选择器定位元素)

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' 

62.send_keys(在元素中模拟输入)

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(“中英”) 

63.is_displayed(此元素用户是否可见)

is_displayed(self): 
Whether the element is visible to a user. 
#此元素用户是否可见
#简单地说就是隐藏元素和被控件挡住无法操作的元素(仅限 Selenium,appium 是否实现了类似功能不是太确定)这一项都会返回 False 
用法 driver.element.is_displayed() 

64.size (获取元素的大小)

size(self): 
The size of the element. 
#获取元素的大小(高和宽) 
new_size["height"] = size["height"] 
new_size["width"] = size["width"] 
用法 driver.element.size 

65.value_of_css_property (CSS 属性)

value_of_css_property(self, property_name): 
The value of a CSS property.#CSS 属性 用法 用的少,但是有

66.location (获取元素左上角的坐标)

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')

67.rect(元素的大小和位置的字典)

rect(self): 
A dictionary with the size and location of the element. 
#元素的大小和位置的字典 

68.screenshot_as_base64 (获取当前元素的截图为 Base64 编码的字符串 )

screenshot_as_base64(self): Gets the screenshot of the current element as a base64 encoded string.#获取当前元素的截图为 Base64 编码的字符串 :Usage: img_b64 = element.screenshot_as_base64 

69.execute_script (同步执行 javascript 代码)

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') 

70.execute_async_script (插入 javascript 代码)

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') 

71.current_url(获取当前页面的网址 )

current_url(self):Gets the URL of the current page.#获取当前页面的网址 :Usage:driver.current_url 
用法 driver.current_url 

72.page_source (获取当前页面的源 )

page_source(self):Gets the source of the current page. #获取当前页面的源 :Usage:
用法 driver.page_source 

73.close(关闭当前窗口)

close(self):Closes the current window. #关闭当前窗口 :Usage:driver.close()

74.quit (退出脚本运行并关闭每个相关的窗口连接)

quit(self): Quits the driver and closes every associated window. #退出脚本运行并关闭每个相关的窗口连接 :Usage:driver.quit()

重要的话

在这里插入图片描述

 

相关文章:

【appium】appium自动化入门之API(下)——两万字API长文,建议收藏

目录 Appium API 前言 1.contexts (返回当前会话中的上下文,使用后可以识别 H5 页面的控件) 2.current_context (返回当前会话的当前上下文 ) 3. context (返回当前会话的当前上下文) 4.find_e…...

开发改了接口,经常忘通知测试的解决方案!

目录 前言: Apifox解决方案 Apifox对此给出的解决方案是: 用Apifox怎么处理接口变更 接口代码实现逻辑修改 接口参数修改 前言: 在开发过程中,接口变动十分频繁,测试人员没有及时获得相关通知的情况也很普遍。这…...

Beyond Compare 4 无法打开

解决办法: 1.修改注册表。WINR呼出开始菜单,在搜索栏中输入 regedit,点击确定。 2.删除项目:\HKEY_CURRENT_USER\Software\ScooterSoftware\Beyond Compare 4\CacheId 根据这个路径找到cacheid 右击删除掉就可以...

MySQL高级数据操作

✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:MySQL 🥭本文内容&a…...

硬件设计电源系列文章-DCDC转换器基础知识

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示:这里可以添加技术概要 本文主要接着上篇,上篇文章主要讲述了LDO的相关基础知识,本节开始分享DCDC基础知识 整体架构流程 提示:这里可以添加技术整体架构 以下是…...

XdsObjects .NET 8.45.1001.0 Crack

XdsObjects 是一个工具包,允许开发人员使用 IHE XDS 和 XDS-I 配置文件开发应用程序,只需花费最少的时间和精力,因为遵守配置文件和 ebXML 规则的所有艰苦工作都由该工具包处理。 它为所有角色提供客户端和服务器支持,包括&#…...

数据安全--17--数据安全管理之数据传输

本博客地址:https://security.blog.csdn.net/article/details/131061729 一、数据传输概述 数据传输有两个主体,一个是数据发送方,另一个是数据接收方。数据在通过不可信或者较低安全性的网络进行传输时,容易发生数据被窃取、伪…...

SpringSecurity实现前后端分离登录token认证详解

目录 1. SpringSecurity概述 1.1 权限框架 1.1.1 Apache Shiro 1.1.2 SpringSecurity 1.1.3 权限框架的选择 1.2 授权和认证 1.3 SpringSecurity的功能 2.SpringSecurity 实战 2.1 引入SpringSecurity 2.2 认证 2.2.1 登录校验流程 2.2.2 SpringSecurity完整流程 2.2.…...

Vue3_ElementPlus_简单增删改查(2023)

Vue3,Element Plus简单增删改查 代码:https://github.com/xiaoming12318/Vue3_ElementPlus_CRUD.git 环境: Visual Studio Code Node.js 16.0或更高版本,https://nodejs.org/en axios 快速上手: 如果已经有16.0及…...

vue中重写并自定义console.log

0. 背景 在vue2项目中自定义console.log并输出文件名及行、列号 1. 实现 1.1 自定义console.log export default {// 输出等级: 0-no, 1-error, 2-warning, 3-info, 4-debug, 5-loglevel: 5,// 输出模式: 0-default, 1-normal, 2-randommode: 1,// 是否输出图标hasIcon: fal…...

基于OpenCV 和 Dlib 进行头部姿态估计

写在前面 工作中遇到,简单整理博文内容涉及基于 OpenCV 和 Dlib头部姿态评估的简单Demo理解不足小伙伴帮忙指正 庐山烟雨浙江潮,未到千般恨不消。到得还来别无事,庐山烟雨浙江潮。 ----《庐山烟雨浙江潮》苏轼 https://github.com/LIRUILONGS…...

24个Jvm面试题总结及答案

1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每…...

freemarker 生成前端文件

Freemarker是一种模板引擎,它允许我们在Java应用程序中分离视图和业务逻辑。在Freemarker中,List是一种非常有用的数据结构,它允许我们存储一组有序的元素。有时候,我们需要判断一个List是否为空,这在程序设计中有许多…...

Pycharm+pytest+allure打造高逼格的测试报告

目录 前言: 1、安装allure 2、安装allure-pytest 3、一个简单的用例test_simpe.py 4、在pycharm底部打开terminal 5、用allure美化报告 6、查看报告 总结: 前言: 今天分享的内容:在Pycharmpytest基础上使用allure打造高逼格…...

Mybatis-Plus中update更新操作用法

目录 一、前言二、update1、关于修改的4个条件构造器2、UpdateWrapper【用法示例】3、LambdaUpdateWrapper【用法示例】4、UpdateChainWrapper【 用法示例】5、LambdaUpdateChainWrapper【 用法示例】6、updateById 和 updateBatchById7、Mybatis-plus设置某个字段值为null的方…...

16道JVM面试题

1.jvm内存布局 1.程序计数器:当前线程正在执行的字节码的行号指示器,线程私有,唯一一个没有规定任何内存溢出错误的情况的区域。 2.Java虚拟机栈:线程私有,描述Java方法执行的内存模型,每个方法运行时都会…...

HttpRunner 接口自动化测试框架实战,打造高效测试流程

简介 2018年python开发者大会上,了解到HttpRuuner开源自动化测试框架,采用YAML/JSON格式管理用例,能录制和转换生成用例功能,充分做到用例与测试代码分离,相比excel维护测试场景数据更加简洁。在此,利用业…...

手写一个webpack插件(plugin)

熟悉 vue 和 react 的小伙伴们都知道,在执行过程中会有各种生命周期钩子,其实webpack也不例外,在使用webpack的时候,我们有时候需要在 webpack 构建流程中引入自定义的行为,这个时候就可以在 hooks 钩子中添加自己的方…...

jvm常见面试题

0x01. 内存模型以及分区,需要详细到每个区放什么。 栈区: 栈分为java虚拟机栈和本地方法栈 重点是Java虚拟机栈,它是线程私有的,生命周期与线程相同。 每个方法执行都会创建一个栈帧,用于存放局部变量表&#xff0…...

TF-A 项目的长期支持介绍

引流关键词:Armv8-A, Armv9-A, Cortex-A, Cortex-A12, Cortex-A15, Cortex-A17, Cortex-A32, Cortex-A34, Cortex-A35, Cortex-A5, Cortex-A510, Cortex-A53, Cortex-A55, Cortex-A57, Cortex-A65, Cortex-A65AE, Cortex-A7, Cortex-A710, Cortex-A715, Cortex-A72, Cortex-A7…...

企业电子招标采购系统源码java 版本 Spring Cloud + Spring Boot

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…...

7.Mysql 事务底层

一、事务的基础知识 mysql中的事务 分为 显式事务 和 隐式事务。 1.1 显式事务 显式事务就是我们手动开启事务,并且提交事务比如: -- 开启事务 begin; -- 执行查询语句 select *from where id = 1 for update ; -- 提交事务 commit;1.2 隐式事务 在 MySQL 中,隐式事务是…...

15.DIY可视化-拖拽设计1天搞定主流小程序-分类联动文章列表实时刷新

分类联动文章列表实时刷新 本教程均在第一节中项目启动下操作 分类联动文章列表实时刷新前言需求一:功能实现:点击首页分类,对应分类内容显示到当前页一、清空原分类界面:二. 设置选项卡三:设定展示内容字段:1.跨页面复制:文章分类组件到分类![在这里插入图片描述](https://img…...

【SpringCloud】二、服务注册发现Eureka与负载均衡Ribbon

文章目录 一、Eureka1、服务提供者与消费者2、Eureka原理分析3、搭建Eureka4、服务注册5、模拟多服务实例启动6、服务的发现 二、Ribbon1、负载均衡的原理2、源码分析3、负载均衡策略4、饥饿加载 一、Eureka 1、服务提供者与消费者 服务提供者:一次业务中&#xf…...

图形学实验(完整文件见上传)

CRect rect; this->GetClientRect(rect); pDC->Ellipse(rect); // DDALineView.cpp : implementation of the CDDALineView class // #include “stdafx.h” #include “DDALine.h” #include “DDALineDoc.h” #include “DDALineView.h” #ifdef _DEBUG #define new…...

Spark大数据处理学习笔记(3.2.1)掌握RDD算子

该文章主要为完成实训任务,详细实现过程及结果见【http://t.csdn.cn/FArNP】 文章目录 一、准备工作1.1 准备文件1. 准备本地系统文件2. 把文件上传到 1.2 启动Spark Shell1. 启动HDFS服务2. 启动Spark服务3. 启动Spark Shell 二、掌握转换算子2.1 映射算子 - map()…...

lammps初级:石墨烯、金属材料、纳米流体、热传导、多成分体系、金属、半导体材料的辐照、自建分子力场、MOFS、H2/CO2混合气体等模拟

1 LAMMPS的基础入门——初识LAMMPS是什么?能干什么?怎么用? 1.1 LAMMPS在win10和ubuntu系统的安装及使用 1.2 in文件结构格式 1.3 in文件基本语法:结合实例,讲解in文件常用命令 1.4 data文件格式 1.5 LAMMPS常见错误解…...

【MarkerDown】CSDN Markdown之时序图sequenceDiagram详解

CSDN Markdown之时序图sequenceDiagram详解 序列图 sequenceDiagram参与者与组参与者 participant拟人符号 actor别名 as组 box 消息(连线)激活/失活 activate/deactivate备注 Note循环 loop备选 Alt并行 par临界区 critical中断 break背景高亮 rect注释 %%转义字符的实体代码序…...

ReentrantLock实现原理-公平锁

在ReentrantLock实现原理(1)一节中,我们了解了ReentrantLock非公平锁的获取流程,在本节中我们来看下ReentrantLock公平锁的创建以及锁管理流程 创建ReentrantLock公平锁 创建公平锁代码如下: ReentrantLock reentrantLock new ReentrantL…...

掌握Scala数据结构(2)MAP、TUPLE、SET

一、映射 (Map) (一)不可变映射 1、创建不可变映射 创建不可变映射mp,用键->值的形式 创建不可变映射mp,用(键, 值)的形式 注意:Map是特质(Scala里的trait,相当于Java里的interface&#…...

巴城镇建设网站/谷歌搜索引擎下载安装

小小喜欢看的动画片我也跟着看起来,发现了一个事实。 小小看的动画片都是国外的,比如《爱探险的朵拉》,《米奇妙妙屋》...但是大致宗旨只有两个,值得我们成年人学习: 1.所有的事情快要成功的时候,总是有个“…...

大型网站制作流程/搜索网页内容

接着上篇《编写高效Excel VBA代码的最佳实践(一)》 尽可能少使用“.”,使用对象变量 在前面已经介绍过的对长对象引用使用对象变量以及使用With…End With等都是简化”.”的方法。因为在代码中的每个句点都表示至少一个(而且可能是多个)过程调用,而这些过…...

国外网站怎么打开/高端网站建设公司排名

4其他需要注意的事项如果您在清单文件AndroidManifest.xml中,有那种以包名开头命名的那种。因为如果包名都改了,有些也需要动态的改变。可以用${applicationId}代替。在打包的时候,会自动替换成当前包名。比如,类似下配置&#xf…...

网站的建设方法有哪些内容/无锡seo优化

2019独角兽企业重金招聘Python工程师标准>>> 这里以cdh5-1.6.0_5.10.2为例。 flume源码下载地址:https://github.com/cloudera/flume-ng/tree/cdh5-1.6.0_5.10.2,SpoolDirectorySource在https://github.com/cloudera/flume-ng/tree/cdh5-1.6.…...

六安网站优化/百度一下首页下载安装桌面

我的系统已经完全编译过。 1。添加bootchart进系统 touch <android_src_dir>/system/core/init/init.c m INIT_BOOTCHARTtrue 2.连接模拟器或真机的情况下&#xff1a; $adbshellecho120>/data/bootchart-start $adbshellmkdir/data/bootchart 3。bootchart官网下…...

wordpress卸载 数据库/seo整站优化服务教程

点击蓝字关注我们UDExpo-Display2月28日消息 2020 年 6 月 19 日&#xff0c;三星电子向 WIPO(世界知识产权局)申请了一项名为 “包括子显示屏及其操作方法的电子设备”的专利&#xff0c;描述了一种手机&#xff0c;其前置摄像头部分可通过切换屏幕分层进行隐藏。该专利已于 1…...