本篇转自博客:上海-悠悠

前言

appium1.5以下老的版本是可以通过name定位的,新版本从1.5以后都不支持name定位了

一、 name定位报错

1.最新版appium V1.7用name定位,报错:

> selenium.common.exceptions.InvalidSelectorException: Message: Locator Strategy 'name' is not supported for this session

2.这个报错是说name这个定位方法目前已经不支持了,因为appium从1.5版本开始就已经抛弃了name这种定位方法了。

二、 xpath定位

1.既然name定位抛弃了,那就说明有更先进的定位代替了它,事实上xpath定位里面已经包含了name这种定位方法。

2.平常用过selenium,在定位页面上文本的时候,应该知道这个xpath语法:
```
//*[text()='页面text文本']
```
appium里面的xpath语法跟selenium有一点点区别:
```
//*[@text='页面text文本']
```
三、 text属性

1.上面的xpath语法适合页面上这个text属性是唯一的,才好直接定位到,那么问题来了:如果页面上有多个text属性的文本一样,怎么办?

2.xpath语法里面\*是代表匹配任意的值,在selenium里面\*是匹配任意标签,appium里的*是匹配任意class名称,如果几个文本的class属性不一样,就可以通过以下组合:
```
//android.widget.TextView[@text='小说']
```


# 参考代码
```
# coding:utf-8
from appium import webdriver
from time import sleep
desired_caps = {
                'platformName': 'Android',
                'deviceName': '127.0.0.1:62001',
                'platformVersion': '4.4.2',
                'appPackage': 'com.baidu.yuedu',
                'appActivity': 'com.baidu.yuedu.splash.SplashActivity'
                }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

# 获取当前界面activity
ac = driver.current_activity
print(ac)

# 等主页面activity出现
driver.wait_activity(".base.ui.MainActivity", 10)

# 点'知道了'
driver.find_element_by_id("com.baidu.yuedu:id/positive").click()

sleep(2)
# 定位页面上text属性
# driver.find_element_by_name("小说").click()  # V1.5以后版本不支持name定位了
driver.find_element_by_xpath("//*[@text='小说']").click()
```

Appium+python自动化28-name定位【转载】的更多相关文章

  1. appium+python自动化50-生成定位对象模板templet(jinja2)

    前言 每次自己写pageobject定位元素对象太繁琐,格式都差不多,只是换个定位方法,这种就可以才有模板的方式,批量生成pageobject定位元素对象的模板 python里面生成模板有两个模块可以 ...

  2. Appium+python自动化4-元素定位uiautomatorviewer

    前言 环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. uiautomatorviewer是androi ...

  3. Appium+python自动化12-appium元素定位

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性

  4. Appium+python自动化12-appium元素定位【转载】

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性

  5. Appium+python自动化4-元素定位uiautomatorviewer【转载】

    前言 环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. uiautomatorviewer是androi ...

  6. appium+python自动化49-yaml管理定位元素

    前言 如何高效管理定位元素,这个是很有学问的问题,也是面试必问的[以下纯属个人观点,勿喷!]. 有的人用xml管理页面定位元素,这种逼格略高,但是小编认为学习成本大,贼麻烦. 有的人提到用excel管 ...

  7. Appium+python自动化22-Appium Desktop【转载】

    Appium Desktop 原滋原味的官方文档 Appium Desktop是一款用于Mac.Windows和Linux的开源应用,它提供了Appium自动化服务器在一个漂亮灵活的UI中的强大功能. ...

  8. Appium+python自动化29-toast消息【转载】

    本篇转自博客:上海-悠悠 前言 appium1.5以后的版本才支持toast定位,并且 'automationName'得设置为'Uiautomator2',才能捕获到. 一. Supported P ...

  9. Appium+python自动化6-Remote远程控制【转载】

    前言 在第三篇启动app的时候有这样一行代码driver = webdriver.Remote('http://192.168.1.1:4723/wd/hub', desired_caps),很多小伙 ...

  10. Appium+python自动化5-Appium Inspector【转载】

    前言    appium Inspector从入门到放弃!反正你都打开了,那就看下为什么要放弃吧! Appium Inspector是appium自带的一个元素定位工具,上一篇介绍了如何使用uiaut ...

随机推荐

  1. 数论初步——Eratosthenes筛法

    具体内容见紫书p312-p313 一.用Eratosthenes筛法构造1~n的素数表 思想:对于不超过n的每个非负整数p,删除2p,3p,4p…,当处理完所有的数后,还没有被删除的就是素数. 代码: ...

  2. identity方式

    identity方式      <generator class="identity"/>identity方式表示数据库的主键生成方式为采用数据库的主键生成机制,例如S ...

  3. js计算当前日期上一个月和下一个月

    /**         * 获取上一个月         *         * @date 格式为yyyy-mm-dd的日期,如:2014-01-25         */        funct ...

  4. 【题解】CQOI2017老C的键盘

    建议大家还是不要阅读此文了,因为我觉得这题我的解法实在是又不高效又不优美……只是想要记录一下,毕竟是除了中国象棋之外自己做出的组合dp第一题~ 首先如果做题做得多,比较熟练的话,应该能一眼看出这题所给 ...

  5. [洛谷P3521][POI2011]ROT-Tree Rotations

    题目大意:给一棵$n(n\leqslant2\times10^5)$个叶子的二叉树,可以交换每个点的左右子树,要求前序遍历叶子的逆序对最少.输出最少的逆序对个数 题解:线段树合并,对于每个节点求出交换 ...

  6. 如何让spring源码正常的部署在idea中

    我在这里把我从GitHub下载的源码成功编译之后的文件放在了我的百度网盘上大家可以直接下载,也可以按如下步骤自己编译部署到idea中, 下载的地址是:http://pan.baidu.com/s/1d ...

  7. java注解(Annotation)的简单介绍

    注解你可以理解为一个特殊的类,或者接口其自定义个格式形如 public @interface 注解名(){ //注解的属性,特别提醒当注解的属性为value时,在对其赋值时,可以不写value,而直接 ...

  8. Git命令文本手册

    git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...

  9. hibernate连接mysql,自动建表失败

    hibernate的列名使用了mysql的关键字.

  10. JS中this的指向问题(读书笔记纯手打~)

    一.this JavaScrip的this总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境. 二.this的指向 根据运用情景可分为四类: 1.作为对 ...