selenium如何操作页面树状列表??举个例子:我要怎么操作如下图所示的树状结构列表?我要对这个树状结构列表做什么操作?

一、思路

1.根据driver.find_element_by_xpath(‘//*[@id="vehGroupTree_1_switch"]’).click() 选中顶级节点;如上图的XX管理(id属性为"vehGroupTree_1_switch"),获取XX管理的id属性;

2.观察节点之间的规律;如上图的id属性的数字部分逐级+1

3.获取树状结构列表所有显示内容?问题:在获取树状结构列表内容的时候,节点没有展开是否可以获取得到?

4.获取树状结构列表分组数目,包括子集?

5.遍历展开所有节点?

二、操作

1.遍历点击“+”按钮,展开树状结构列表的子集

a = 'vehGroupTree_1_switch'  # 顶级节点的id属性
b = a.split('_')         # 拆分id属性
c = []                # 存放id属性的数字部分列表
e = []                # 存放生成的id属性
# 生成id属性的数字部分
for x in range(2,21):      # 从2开始遍历,避免点击到顶级节点,使后续节点获取不到属性,导致报错;21为树状结构列表内容总数n+1(总数为n)
c.append(x)
print(c)
# 组合id属性
for i in c:
g = b[0] + '_' + str(i) + '_' + b[2] # 组合 :
e.append(g)
print(g)
print(e)
# 遍历点击“+”按钮,展开树状结构列表的子集
for k in e:
print(k)
print("//*[@id='" + k + "']")
d.find_element_by_xpath("//*[@id='" + k + "']").click()

2.获取树状结构列表分组数目,包括子集,并获取列表的所有内容

注意:如果没有所有子集展示出来,是获取不到子集内容的(统计包括子集在内的总数)

a = d.find_elements_by_xpath('//*[@id="vehGroupTree_1"]')  # 定位到整个树状结构列表元素
b = []
for p in a:
c = p.text
b.append(a)
print(c, p.get_attribute("href")) # 打印遍历标签出来的内容
print(b)
print(b[0].split('\n')) # 以\分隔符拆分
print(len(b[0].split('\n'))) # 统计

3、贴上完整代码

from selenium import webdriver
import time d = webdriver.Chrome()
d.maximize_window()
d.get(url)
d.find_element_by_xpath('//*[@id="userName"]').send_keys(username)
d.find_element_by_xpath('//*[@id="userPwd"]').send_keys(passworld)
d.find_element_by_xpath('//*[@id="login"]').click()
time.sleep(2)
d.find_element_by_xpath('//*[@id="menu_ul"]/li[5]/a').click()
d.switch_to_frame('mainframe2')
d.find_element_by_xpath('//*[@id="nav-accordion"]/li[2]/a').click()
d.switch_to_frame('mainframe')
d.switch_to_frame('vehIframe') a = 'vehGroupTree_1_switch'
b = a.split('_')
c = []
e = []
for x in range(2,21):
c.append(x) #print(c)
for i in c: g = b[0] + '_' + str(i) + '_' + b[2]
e.append(g)
#print(g)
#print(e)
# 遍历点击展示子集节点
for k in e:
#print(k)
#print("//*[@id='" + k + "']")
d.find_element_by_xpath("//*[@id='" + k + "']").click() he = d.find_elements_by_xpath('//*[@id="vehGroupTree_1"]')
lists = []
for p in he:
a = p.text
lists.append(a)
print(a, p.get_attribute("classname")) # 打印遍历标签出来的内容
print(lists)
print(lists[0].split('\n'))
print(len(lists[0].split('\n')))

selenium如何操作页面树状列表的更多相关文章

  1. GTK+中的树状列表构件(GtkTreeView)

    GTK+中的树状列表构件(GtkTreeView) GTK+中的树状列表构件(GtkTreeView) 在本章的GTK+程序设计教程中,我们将向大家重点介绍非常常用也有点复杂的构件--GtkTreeV ...

  2. jquery写的树状列表插件-alvintree

    在做项目的时候遇到选择部门下人员的功能,可多选可单选,所以就想着使用树状列表来进行选择,但在网上找了很多,发现要么就是挺复杂,要么就是需要各种前端框架的支持,试了一个感觉难用,所以就想着自己写一个简便 ...

  3. LigerUI 树状列表折叠显示

    http://blog.csdn.net/haojuntu/article/details/8626040 —————————————————————————————————————————————— ...

  4. Android中的树状(tree)列表

    树状列表前端挺常用的,还有人专门写过Ztree,Android中有的时候也需要使用到树状列表,上篇文章写了一下ExpandableListView,ExpandableListView最多支持两级结构 ...

  5. jquery-treegrid树状表格的使用(.Net平台)

    上一篇介绍了DataTable,这一篇在DT的基础之上再使用jquery的一款插件:treegrid,官网地址:http://maxazan.github.io/jquery-treegrid/ 一. ...

  6. HDU 1394 Minimum Inversion Number(线段树/树状数组求逆序数)

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  7. Ultra-QuickSort(树状数组求逆序对数)

    Ultra-QuickSort 题目链接:http://poj.org/problem?id=2299 Time Limit: 7000MS   Memory Limit: 65536K Total ...

  8. zoj2112 树状数组+主席树 区间动第k大

    Dynamic Rankings Time Limit: 10000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu Subm ...

  9. 洛谷P2414 阿狸的打字机 [NOI2011] AC自动机+树状数组/线段树

    正解:AC自动机+树状数组/线段树 解题报告: 传送门! 这道题,首先想到暴力思路还是不难的,首先看到y有那么多个,菜鸡如我还不怎么会可持久化之类的,那就直接排个序什么的然后按顺序做就好,这样听说有7 ...

随机推荐

  1. .net微信扫码支付

    今天给大家分享一篇.net的扫码支付文章,话不多说直接进入主题. 如有需要可以加我Q群[308742428]大家一起讨论技术,有偿服务. 后面会不定时为大家更新文章,敬请期待. 喜欢的朋友可以关注下. ...

  2. Apache Hadoop集群离线安装部署(一)——Hadoop(HDFS、YARN、MR)安装

    虽然我已经装了个Cloudera的CDH集群(教程详见:http://www.cnblogs.com/pojishou/p/6267616.html),但实在太吃内存了,而且给定的组件版本是不可选的, ...

  3. 【JS学习】慕课网6-11编程联系 简单计算器

    使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElementById( ...

  4. Delphi中的线程类(转)

    Delphi中的线程类 (转) Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对 TThread类的几个成员作一简单介绍,再说明一下 ...

  5. Dart编程实例 - Final 关键字

    Dart编程实例 - Final 关键字 void main() { final val1 = 12; print(val1); } 本文转自:http://codingdict.com/articl ...

  6. 工程师技术(一):启用SELinux保护、自定义用户环境、配置IPv6地址、配置聚合连接、配置firewalld防火墙

    一.启用SELinux保护 目标: 本例要求为虚拟机 server0.desktop0 配置SELinux: 确保 SELinux 处于强制启用模式 在每次重新开机后,此设置必须仍然有效 方案: SE ...

  7. HBase与Hive交互操作案例

    HBase与Hive交互操作 1.环境准备 因为我们后续可能会在操作Hive的同时对HBase也会产生影响,所以Hive需要持有操作HBase的Jar,那么接下来拷贝Hive所依赖的Jar包(或者使用 ...

  8. vue中的toast组件

    首先在components新建组件文件夹 随后在toast.vue中写入弹框样式 <template> <transition name="demo"> & ...

  9. int在64位操作系统中占多少位?

    仍然是32位. 曾经是这样的:16位操作系统中,int 占16位:在32位操作系统中,int 占32位.但是现在人们已经习惯了 int 占32位,因此在64位操作系统中,int 仍为32位.64位整型 ...

  10. TCP/IP报文格式

    1.TCP首部格式 1.1 格式各字段含义 源端口号( 16 位):它(连同源主机 IP 地址)标识源主机的一个应用进程. 目的端口号( 16 位):它(连同目的主机 IP 地址)标识目的主机的一个应 ...