遍历点击下拉树图标

发现有下级菜单的图标,都有一个特点,放到css里面了。

然后进行循环,点击一个展开后 需要重新定位这样不会有重复的。这里有个特殊的,是从0开始的,循环的时候要注意。

 #循环点击左侧树状图 先遍历点下拉图标
    ele_icon=driver.find_elements_by_css_selector('.aty-tree-node-hd .aty-tree-node-trigger')
    css='.aty-tree-node-hd .aty-tree-node-trigger'
    left_list=driver.find_elements_by_css_selector(css)
    print(f'''我在外面{len(left_list)}''')
    for i in range(0,len(left_list)+1):
        driver.find_elements_by_css_selector(css)[i].click()
        left_list = driver.find_elements_by_css_selector(css)
        print(f'''我在里面{len(left_list)}''')
        time.sleep(2)
        print(i)

再附上一个  固定两个层级的代码--备用

import time
import self
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver


#	判断元素是否存在的方法
def isElementExist(ele_icon):
    flag=True
    # browser=self.driver
    try:
        driver.find_element_by_xpath(ele_icon)
        return flag
    except:
        flag=False
        return flag

if __name__ == '__main__':

    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(30)
    first_url = 'http://172.18.65.1111111136:8081/#/query/1'
    driver.get(first_url)
    #点击到编辑查询界面
    driver.find_element_by_xpath('//*[@id="app"]/div[1]/div[2]/div[2]/div/div[3]/div[1]/div/div[2]/span').click()
    driver.find_element_by_xpath('//*[@id="app"]/div[2]/div/div[2]/div[1]/div[1]/button/span').click()

    #循环点击左侧树状图
    left_table=driver.find_elements_by_css_selector('#jsTreeContain>.aty-tree-node')
    index=len(left_table)
    for i in range(1,index+1):
        try:
            #第一个层级   这里有可能会有多个层级,一般是一个   //*[@id="jsTreeContain"]/li[1]/h3/span[2]
            ele=driver.find_element_by_xpath('//*[@id="jsTreeContain"]/li['+str(i)+']/h3/span[2]')
            ele_icon=driver.find_element_by_xpath('//*[@id="jsTreeContain"]/li['+str(i)+']/h3/span[1]')
            flag=isElementExist(ele_icon)
            ele_icon.click()
            print('已展开下级菜单'.center(50,'-'))
            time.sleep(1)
            # 第二个层级 #jsTreeContain .aty-tree-node-content >.aty-tree-node
            ele2 = driver.find_elements_by_css_selector('#jsTreeContain .aty-tree-node-content >.aty-tree-node')
            num = len(ele2)
            print(f'''{i}组:{ele.text}里有{num}个表''')
            for m in range(1, num + 1):
                ele_inner = driver.find_element_by_xpath('//*[@id="jsTreeContain"]/li[' + str(i) + ']/ul/li[' + str(m) + ']')
                ele_inner.click()
                print(f'''第{m}个表为:{ele_inner.text}''')
                time.sleep(0.5)

        except NoSuchElementException:
            driver.find_element_by_xpath('//*[@id="jsTreeContain"]/li['+str(i)+']/h3/span').click()






猜你喜欢

转载自blog.csdn.net/honghong3864/article/details/115328317