python appium笔记(二):元素定位
#这里的示例是用android来说明的,xpath应该是通用的,resource-id不太清楚,没配过IOS的环境
#环境配置和一些参数的意思不清楚可以看我上一篇python appium笔记(一)
(一)说明
主要说明下面2种方式,其实感觉通过xpath,不管selenium还是appium,应该能定位全部元素了。
1、resource-id:定义了resource-id,并且唯一的情况下,可以使用这种方式
2、xpath:任何情况下,都可以用xpath进行定位
(二)查看
#做第四步的时候,记得先连真机,并且开启USB调试
1、启动appium,点击下面的start server
2、点击file -- new session window
3、配置Desired Capabilities(这里可以保存配置信息,方便下次使用)
4、Start Session启动
5、如上图,可以看到resource-id的值,但是可以发现这个值不是唯一的。
6、所以可以用xpath进定位,把 android.widget.ImageView这些东西当成HTML的标签看就行了。(这里我当你已经能熟练的在selenium中使用xpath定位)
//android.support.v7.app.ActionBar.Tab[4]//android.widget.ImageView
(三)示例
这里用博客园的app做示例了
1 from appium import webdriver 2 import time 3 desired_caps = { 4 'platformName':'Android', 5 #用真机的时候,这个参数deviceName没什么用,但是还是必须要有这个参数,值的话随便填就行了 6 'deviceName':'HUAWEI', 7 'platformVersion':'7.0', 8 'appPackage':'com.rae.cnblogs', 9 'appActivity':'com.rae.cnblogs.activity.LauncherActivity', 10 'unid':'填写自己手机unid的值', 11 'noReset':'true', 12 #设置下面2个参数解决不能输入中文的问题 13 'unicodeKeyboard': 'True', 14 'resetKeyboard':'True' 15 } 16 driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps) 17 driver.implicitly_wait(20) 18 #定位 我,通过xpath定位 19 my = driver.find_element_by_xpath('//android.support.v7.app.ActionBar.Tab[4]//android.widget.ImageView') 20 my.click() 21 #定位意见反馈,通过resource-id定位 22 idea = driver.find_element_by_id('com.rae.cnblogs:id/ll_feedback') 23 idea.click() 24 #定位意见反馈输入框 25 idea_input = driver.find_element_by_id('com.rae.cnblogs:id/avoscloud_feedback_input') 26 # idea_input = driver.find_element_by_xpath('//android.widget.LinearLayout[2]/android.widget.EditText') 27 #定位发送意见按钮 28 idea_send = driver.find_element_by_id('com.rae.cnblogs:id/avoscloud_feedback_send') 29 #输入意见信息 30 idea_input.send_keys('博客园is very good!support you') 31 #点击发送 32 idea_send.click() 33 time.sleep(10) #睡眠10秒 34 #退出app 35 driver.quit()