Appium在ios下获取页面元素的一种新思路
1.传统思路,获取页面所有的元素后,通过遍历去得到想要的值
#xpath慢
# time_list2 = driver.find_elements_by_xpath('//XCUIElementTypeCell/XCUIElementTypeStaticText[2]')
# print(time_list2)
# # 遍历time_list1
# for time2 in time_list2:
# if re.search(re_time, time2.get_attribute('name')) is not None:
# all_time.add(time2.get_attribute('name'))
# print(time2.get_attribute('name'))
2.新思路
因为appium在ios中,通过driver.page_source属性,能得到一个xml格式的全部元素。于是采用这种方法,得到了全部元素,适合查询浏览等这类较少操作的页面。
tree = ET.parse('xiaokai.xml')
root = tree.getroot()
for page_cell in root.iter('XCUIElementTypeCell'):
page_st = page_cell.findall('XCUIElementTypeStaticText')
for page_leaf in page_st:
transname = page_leaf.get('name')
# print(transname)
if re.search(re_time, transname) is not None:
all_time.add(transname)
# print(transname)
print(timestr + '当前时间-------获取的记录' + transname)
主要用到的方法如下:
导入xml解析模块
1、import xml.etree.ElementTree as ET
生成xml文件,并对xml文件解析,得到根节点
2、
fp = open(xmlfile,'w')fp.write(driver.page_source)fp.close()
tree = ET.parse('test.xml')root = tree.getroot()
3、得到xml文件中所有的XCUIElementTypeStaticText节点数据。
# for page_el in root.iter('XCUIElementTypeStaticText'):
# print(page_el.attrib)
4、查找感兴趣的element的方法
Element.Iter()方法
Element.findall() 查找当前element的孩子的属于某个tag的element。
Element.find() 查找属于某个tag的第一个element。
Element.text 访问element的文本内容。
Element.get()获取element的属性。
下面代码就是通过循环获取相关页面元素并打印出来,因为是对xml文件进行操作,速度很快,并且获得的数据也很准确。也不会报错。
for page_cell in root.iter('XCUIElementTypeCell'):
page_st = page_cell.findall('XCUIElementTypeStaticText')
for page_leaf in page_st:
transname = page_leaf.get('name')
# print(transname)
if re.search(re_time, transname) is not None:
all_time.add(transname)
# print(transname)
print(timestr + '当前时间-------获取的记录' + transname)
上一篇: Java集合一之ArrayList
下一篇: 一种异步保存的思路