python appium api pc_(appium+python)_06_appium常用API(二)

1.send_keys

send_keys(self, *value):

Simulatestypingintotheelement【在元素中模拟输入(开启appium自带的输入法并配置了appium输入法后,可以输入中英文)】

:Args:

-value-Astringfortyping,orsettingformfields.Forsettingfileinputs,thiscouldbealocalfilepath.

Usethistosendsimplekeyeventsortofilloutformfields::

form_textfield=driver.find_element_by_name('username')

form_textfield.send_keys("admin")Thiscanalsobeusedtosetfileinputs.

::

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

send_keys方法需要在配置Capabilities信息时打开模拟键盘unicodeKeyboard与resetKeyboard,如下面代码举例:

2.find_element_by_id

find_element_by_id(self, id_):

Findselementwithinthiselement's children by ID(通过元素的ID定位元素)

:Args:- id_ - ID of child element to locate.

用法 driver. find_element_by_id(“id”)

find_element_by_id方法,是对于那些有id而且可以互相区分的控件的操作使用,一般通过android sdk 的tools路径下的uiautomatorviewer.bat自带工具来获取,

使用这个工具首先要确保前面环境配置ok,然后确定测试机器或android模拟器处于连接状态(cmd上输入adb devices),下面是使用uiautomatorviewer.bat工具

获取id的步骤:

(1)在android-sdk\tools路径下找到uiautomatorviewer.bat工具,双击uiautomatorviewer.bat打开,如下图

(2)获取id,如下图所示,右边Node Detail的红色框内resource-id就是左边天气应用的id

代码举例:

3.find_element_by_xpath

find_element_by_xpath(self, xpath):

Findselementbyxpath(通过Xpath定位元素,详细方法可参阅http://www.w3school.com.cn/xpath/ )

:Args:

xpath-xpathofelementtolocate."//input[@class='myelement']"

Note:Thebasepathwillberelativetothiselement'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_element_by_xpath方法也需要使用uiautomatorviewer.bat工具来定位控件,如下图所示右边相机控件id为空,这时就需要使用xpath来定位元素了,

我们可以使用xpath用text和index来定位元素,如下图的就可以这样定位相机:

driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'相机')]")

driver.find_element_by_xpath("//android.widget.TextView[contains(@index,8)]")

如下图的图库那个控件index和天气温度控件是相同的,都是index=7,就只能用text或text与index结合了,如:

driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'图库')]")

driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'图库')and@index='7']")

上面的代码就可以这样写

4. ind_element_by_name

find_element_by_name(self, name):

Findselementwithinthiselement'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方法的控件元素也需要使用uiautomatorviewer.bat工具来定位,如上面例子中带有text信息的控件就可以直接使用,如

driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'相机')]")

driver.find_element_by_xpath("//android.widget.TextView[contains(@index,8)]")

可以使用

driver.find_element_by_name('相机')

脚本如下

5. find_element_by_class_name

find_element_by_class_name(self, name):

Findselementwithinthiselement's children by class name(通过元素class name属性定位元素)

:Args:- name - class name to search for.

用法 driver. find_element_by_class_name(“android.widget.LinearLayout”)

find_element_by_class_name方法其实很不实用,一般控件的class基本相同,如下图上面的应用控件class都是android.widget.TextView,所以不好区分元素。

6.tap

tap(self, positions, duration=None):

Tapsonanparticularplacewithuptofivefingers,holdingforacertaintime 【模拟手指点击(最多五个手指),可设置按住时间长度(毫秒)】

:Args:

-positions-anarrayoftuplesrepresentingthex/ycoordinatesofthefingerstotap.Lengthcanbeuptofive.

-duration-(optional)lengthoftimetotap,inms

:Usage:driver.tap([(100,20),(100,60),(100,100)],500)

用法driver.tap([(x,y),(x1,y1)],500)

当控件无法获取时,那我们就可以使用坐标用tap方法做点击操作,而且tap方法可以用于多点点击。

7.zoom

zoom(self, element=None, percent=200, steps=50):

Zoomsinonanelementacertainamount (在元素上执行放大操作)

:Args:

-element-theelementtozoom

-percent-(optional)amounttozoom.Defaultsto200%

-steps-(optional)numberofstepsinthezoomaction

:Usage:driver.zoom(element)

用法 driver.zoom(element)

zoom方法用来模拟手机上的放大操作,主要是要确定element,具体例子和下面pinch方法一起讲。

8.pinch

pinch(self, element=None, percent=200, steps=50):

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

:Args:

-element-theelementtopinch

-percent-(optional)amounttopinch.Defaultsto200%

-steps-(optional)numberofstepsinthepinchaction

:Usage:driver.pinch(element)

用法 driver.pinch(element)

pinch方法用来模拟手机上的缩小操作,主要是要确定element,下面举例进入图库查看图片时放大和缩小图片,使用uiautomatorviewer.bat工具来定位元素。

(1)进入图库,如下图所示,图库控件text是唯一的,所以我们采用by_name方法获取元素。

driver.find_element_by_name('图库')

(2)选择图库的一个文件夹,如下图所示,选择杂志锁屏,由于该元素text也是唯一的,所以使用by_name方法获取控件元素。

driver.find_element_by_name('杂志锁屏')

(3)选择一张图片,所下图所示,下面图片是一个整的布局,没有单独分开的控件元素,所以我们只能选择使用tap方法点击屏幕。

driver.tap([(300,500)],50)

(4)放大和缩小图片,如下图所示,整个图片是一个布局,而且只有class信息,由于放大和缩小需要获得element,所以我们使用class_name的

方法获取整个布局作为元素。

el=driver.find_element_by_class_name('android.widget.RelativeLayout')

driver.zoom(el)

driver.pinch(el,200,50)

上面操作的具体脚本如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值