python appium api pc_APPIUM API整理(python)---元素查找

最近在学习自动化框架appium,网上找一些API相关资料整理了一下

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

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

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

获取resource-id

代码举例:

#点击天气应用

driver.find_element_by_id(‘com.huawei.android.totemweather:id/mulan_widget_currentweather_smallicon‘).click()

2.find_element_by_xpath

find_element_by_xpath(self, xpath):

Finds element by xpath(通过Xpath定位元素,详细方法可参阅http://www.w3school.com.cn/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_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‘]")

上面的代码就可以这样写

# -*-coding=utf-8 -*-

from appium import webdriver

import time

desired_caps = {

‘platformName‘ : ‘Android‘,

‘deviceName‘ : ‘76P4C15813005463‘,

‘platformVersion‘ : ‘5.1‘,

#测试apk包名

‘appPackage‘ : ‘com.huawei.android.launcher‘,

#测试apk的launcherActivity

‘appActivity‘ : ‘.Launcher‘,

}

#进入android系统launcher

driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘,desired_caps)

time.sleep(5)

#从launcher主界面进入相机应用并退出的两种方法

driver.keyevent(‘3‘)

#xpath使用text定位控件

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

time.sleep(2)

driver.keyevent(‘3‘)

time.sleep(2)

#xpath使用index定位控件

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

time.sleep(2)

driver.keyevent(‘3‘)

time.sleep(2)

#从launcher主界面进入图库应用并退出的两种方法

#xpath使用text定位控件

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

time.sleep(2)

driver.keyevent(‘3‘)

time.sleep(2)

#xpath使用text与index一起定位控件

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

time.sleep(5)

driver.keyevent(‘3‘)

time.sleep(2)

driver.quit()

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

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(‘相机‘)

脚本如下

from appium import webdriver

import time

desired_caps = {

‘platformName‘ : ‘Android‘,

‘deviceName‘ : ‘76P4C15813005463‘,

‘platformVersion‘ : ‘5.1‘,

#测试apk包名

‘appPackage‘ : ‘com.huawei.android.launcher‘,

#测试apk的launcherActivity

‘appActivity‘ : ‘.Launcher‘,

}

#进入android系统launcher

driver = webdriver.Remote(‘http://localhost:4723/wd/hub‘,desired_caps)

time.sleep(5)

#name方法进入相机应用

time.sleep(2)

driver.find_element_by_name("相机").click()

time.sleep(5)

driver.quit()

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

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

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

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

7. find_element_by_partial_link_text

find_element_by_partial_link_text(self, link_text):

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

9. find_element_by_css_selector

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‘

10. find_element_by_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’)

11. find_element_by_accessibility_id

find_element_by_accessibility_id(self, id):

Finds an element by accessibility id.

通过accessibility id查找元素

:Args:- id - a stringcorresponding 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’)

学习地址:

http://blog.csdn.net/bear_w/article/details/50330565

http://blog.csdn.net/bear_w/article/details/50330565

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值