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('\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')))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM