Appium元素定位方式

news/2024/7/5 19:20:56

1.由于Appium继承了Selenium,所以Selenium胡定位方式都可以使用。通过sdk->\tools 下的uiautomatorviewer工具获取id、name、classname等

2.uiautomator:driver.find_elements_by_android_uiautomator("uiautomator定位串"),实际上是调用uiautomator来定位

注意:driver.find_elements_by_android_uiautomator返回的是一个列表,列表保存的是找到的元素,所以无法click(),想要click()的话,必须通过索引

3.通过元素坐标定位,之后进行操作 

 

案例:手机淘宝 -> 天猫  -> 返回

#coding=utf-8
from appium import webdriver
from time import sleep
import os
from selenium.webdriver.common.by import By
PATH = lambda p: os.path.abspath(
os.path.join(os.path.dirname(__file__), p)
)

desired_caps = {
'platformName':'Android',
'platformVersion':'4.4.2',
'deviceName':'Y15QKCNQ237LC',
# desired_caps['app'] =PATH('C:\\Users\\Administrator\\Desktop\\shoujitaobao_151.apk')
#如果手机未安装该软件,且安装包在电脑上,则需指定路径,包名和活动名可不指定
#如果手机已经安装,则不需指定路径,指定下面的包名和活动名即可
'appPackage':'com.taobao.taobao',
'appActivity':'com.taobao.tao.welcome.Welcome',
#屏蔽软键盘,方便输入中文
'unicodeKeyboard':True ,
'resetKeyboard':True

}

#启动app
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
sleep(5)

#定位方式一
# driver.find_element_by_name('天猫').click()
# test = driver.find_element(By.NAME,"天猫")
# print type(test)
# print test
# test.click()

#定位方式二
# driver.find_elements_by_android_uiautomator("new UiSelector().text(\"天猫\")")[0].click()
'''uiautomator定位
find_elements_by_android_uiautomator返回的是个列表,列表中保存的是找到的元素,所以无法click(),需要加索引才能进行click()
'''

#定位方式三
driver.tap([(19,370),(136,462)],1)

sleep(5)
driver.find_element_by_class_name("android.widget.ImageButton").click()

转载于:https://www.cnblogs.com/yan-xiang/p/6753193.html


http://www.niftyadmin.cn/n/4049295.html

相关文章

ORACLE客户端连服务器的注意事项

ORACLE客户端连服务器的注意事项:(转载) 1. 通过SQL*NET协议,ORACLE客户端连服务器时一般需要配置sqlnet.ora和tnsnames.ora。 它们默认的目录在$ORACLE_HOME/network/admin 目录下 也可以设置环境变量TNS_ADMIN指向你想用的sqlnet.ora和t…

poj3417(LCA+DP)

题目连接&#xff1a;http://poj.org/problem?id3417 tarjan树DP 来自&#xff1a;http://www.cnblogs.com/scau20110726/archive/2013/05/31/3110666.html 1 #include<cstdio>2 #include<cstring>3 #include<algorithm>4 #include<cmath>5 using nam…

升级android studio 4.1没有flutter、Dart插件

升级Android Studio 4.1.3没有flutter、Dart插件&#xff0c;无法创建flutter项目。 搜索发现Android Studio 4.1.3安装之后不再自带flutter和dart ,需要自己手动安装。 点击Android Studio -> Preferences 搜索安装flutter和dart插件 在Marketplace搜索flutter和dart并…

java web实例训练知识错误总结(三)

一、request的getParameter()和getAttribute()的区别 getParameter 是用来接受用post个get方法传递过来的参数的.getAttribute 必须先setAttribute.&#xff08;1&#xff09;request.getParameter() 取得是通过容器的实现来取得通过类似post&#xff0c;get等方式传入的数据&a…

回家过年啦!

上上个星期六的晚上还是很冷&#xff08;1月6号&#xff09;&#xff0c;突然在星期天晚上在被窝里面感觉很热&#xff0c;自己第一次感觉到春天已经来到了&#xff01;我有一种说不出的心情。身处湖州&#xff0c;自己有一种很想回家的感觉&#xff0c;很想看看爸爸妈妈的感觉…

项目组的同志在公司上班(20060124)

这个星期道公司上班&#xff0c;体验了一回在公司上班的滋味。项目组的同志在这里上班真正的与众不同&#xff0c;上班想几点就几点&#xff0c;真是爽阿。星期一&#xff0c;我睡觉到了10点半&#xff0c;然后乘74路车到公司&#xff0c;因为今天大家都回来了&#xff0c;晚上…

[Java] List.of() 报错问题解决

首先&#xff0c;检查您使用的Java版本是否正确&#xff1f; 由于Java 9才支持List接口的static工厂方法&#xff0c;请参见List.of。 private static List<Item> defaultItems() {//java 8return Arrays.asList(new Item(1L, "Burger", 599L, "Tasty&qu…