• selenium如何操作页面树状列表


    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('
    '))  # 以分隔符拆分
    print(len(b[0].split('
    ')))  # 统计

    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('
    '))
    print(len(lists[0].split('
    ')))
  • 相关阅读:
    tcpdump使用技巧
    linux: 系统调用
    linux命令:rsync, 同步文件和文件夹的命令
    编译kernel:make Image uImage与zImage的区别
    linux下操作gpio寄存器的方法
    Linux输入子系统(Input Subsystem)
    Android电源管理基础知识整理
    【Android休眠】之Android休眠机制
    拓扑排序入门(真的很简单)
    有向无环图的拓扑排序
  • 原文地址:https://www.cnblogs.com/yfacesclub/p/11189650.html
Copyright © 2020-2023  润新知