6.2 element和elements

Posted pythontest

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.2 element和elements相关的知识,希望对你有一定的参考价值。

为什么这个要单独拿出来说,因为我在很多群里面看见很多人不能区分这个!

      本章换个app,换一个一亿人都在用的app,安卓市场!!!!!!!

       提醒:建议初学者跟着敲,边敲边理解!  实际上截止本章为止,和有无python基础关系不大,前几章的东西都是需要记的!

技术分享图片

 

路径:直接复制

 

 

1 Start[appPackage]=com.hiapk.marketpho      #包名
2 Start[appActivity]=com.baidu.appsearch.LauncherActivity 

 

如图所示,改下这三个东西就好了!

然后,打开手机进入安卓市场!

首次打开会有一个权限弹窗(下章讲到)

技术分享图片

 

 

这个脚本写好直接点击就可以了,,以往章节更新的内容可以完全可以操作这一步!

from site_packages.appium import webdriver
import time
Start={}
Start[platformName]=android    #设备型号  android或者ios
Start[platformVersion]=7.1.2  #安卓设备版本号
Start[deviceName]=2905bdb6     #安卓设备名称
Start[app]=rC:UsersAdministratorDesktopxuexiapkanzhuoshichang_16793302.apk    #设备路径  pc电脑存放apk包的路径
#上面的路径不推荐这种写法,但是目前先这么写!后续告诉大家正确的写法
Start[appPackage]=com.hiapk.marketpho      #包名
Start[appActivity]=com.baidu.appsearch.LauncherActivity        #容器
Start[noReset]=True           #是否重新安装app  True不重新安装
Start[unicodeKeyboard]=True   #是否禁用手机键盘  True禁用手机输入法
Start[resetKeyboard]=True     #是否启动appium自带键盘 True开始手机输入法
Start[automationName]=Uiautomator2     #可选模式  本教程默认 Uiautomator2
Start[newCommandTimeout]=400  #超时时间(s)
driver = webdriver.Remote(http://localhost:4723/wd/hub, Start)
driver.implicitly_wait(10)  #隐式等待十秒
time.sleep(3)
#点击立即体验进入首页
try:
    driver.find_element_by_id(com.hiapk.marketpho:id/iknow).click()
except:
    pass
time.sleep(3)  #可能由于网速或者其他原因页面加载较慢,所以加个等待时间---等待三秒之后在执行下面的定位元素语句

 

注:完全没有python基础的给补充一点

  

try

 

       如果下面这句报错,   如果不报错则except里面的则不执行

 

except

  就执行excep下面的语句,注意缩进

 

 

放在这里的意思是,因为【立即开启*****】这个按钮只有第一次进入才有,后续进入就没有了,所以如果能点击这个就点击,不能点击就执行except,直接pass

 

之前有提到很多中定位方式,这里建议试一下!

 

 

….

 

大家会发现首次打开APP的时候,大家会发现安装之后.有一个 权限读写的弹出层,这个东西怎么定位呢!  这个东西下章给更新细说!这章主要介绍 elementelments,这个允许按钮大家在这里手动点击一下直接进入下一个步骤!

 

 

 

点击立即开启 进入首页:

技术分享图片

 

 

发现 如图标示的五个元素的id是一样的比如我要定位第二个(排行上面的图片)这个时候怎么定位

   如果用driver.find_element_by_id()定位会怎么样呢,上面的脚本加上这个执行

 

 

a=driver.find_element_by_id(com.hiapk.marketpho:id/icon)
print(a)
a.click()

 

 

 

 

会发现打印的是第一个(<site_packages.appium.webdriver.webelement.WebElement (session="ba0c2ba5-9ca7-42bd-9bb2-45eecd5e1f8a", element="88939232-8c60-4ece-aae0-744895b9422d")>),切点击的也是第一个元素

 

那么用driver.find_elements_by_id()

a=driver.find_elements_by_id(com.hiapk.marketpho:id/icon)
print(a)
a.click()

 

执行结果:

技术分享图片

 

 

很明显报错了---这里涉及到python基础语法—--list取值!因为 elements取出来的是一个 list集合,list很显然是无法直接点击的!

  语法:a=[1,2,3,4,5]

               a[0]取出来的结果是1

a[1]取出来的结果是2 以此类推

所以修改脚本如下a[1]是取第二个也就是说点击排行

a=driver.find_elements_by_id(com.hiapk.marketpho:id/icon)
print(a)
a[1].click()

 

执行结果:达到预期

 

 

 

 

 

 

 

 

Start[appPackage]=com.hiapk.marketpho      #包名
Start[appActivity]=com.baidu.appsearch.LauncherActivit

 


以上是关于6.2 element和elements的主要内容,如果未能解决你的问题,请参考以下文章

TP5报如下的错误 Indirect modification of overloaded element of thinkpaginatorCollection has no effect(代码片段

项目集成element-plus和axios

js代码片段: utils/lcoalStorage/cookie

maven web项目的web.xml报错The markup in the document following the root element must be well-formed.(代码片段

VUE +Element 实现多个字段值拼接

element Cascader 级联选择器动态加载实例