python+selenium获取树状列表内容,勾选特定元素的复选框,xpath参数化

我的需求是这样的:
获取树状列表所有元素,然后可以根据元素勾选对应的复选框
在这里插入图片描述
1.获取树状列表

    # 清空选项
    driver.find_element_by_xpath(
        "//*[@id='treeCountryGroup']//li[@class='level0']/span[starts-with(@class,'button chk checkbox_true')]").click()
    time.sleep(3)
    # 展开所有选项
    driver.find_element_by_id('CGExpandAll').click()
    time.sleep(2)
    # 获取整个列表
    country_list = driver.find_elements_by_xpath('//*[@id="treeCountryGroup"]')  # 定位到整个树状结构列表元素
    list_name = []
    for item in country_list:
        name = item.text
        print(name)
        list_name.append(name)

    lists=list_name[0].split('\n')
    print(lists)
    print(len(lists))

2.因为复选框是从1开始,所以我获取列表长度,然后和树状列表组成一个字典,在根据字典的value找key

    d=[]
    for i in range(1,len(lists)):
        d.append(i)
    print(d)
    f=zip(d,lists)
    f=dict(f)
    print(f)

    f1={
    
    v : k for k, v in f.items() }
    print(f1)

3.search栏位,输入值,然后勾选

    driver.find_element_by_id('txtKeySearch').send_keys(‘ROI’)
    time.sleep(1)
    print(f1[c])
    path='//*[@id="treeCountryGroup_10_check"]'
    driver.find_element_by_xpath(path).click()
    time.sleep(2)

4.xpath 参数化,用format
以下是全部代码

def setting(c):
    # 点击Setting
    driver.switch_to.frame('ifContent')
    driver.find_element_by_xpath('//*[@id="btnSetting"]').click()
    time.sleep(2)
    # 选择国家\清空选项
    driver.find_element_by_xpath(
        "//*[@id='treeCountryGroup']//li[@class='level0']/span[starts-with(@class,'button chk checkbox_true')]").click()
    time.sleep(3)
    # 展开所有选项
    driver.find_element_by_id('CGExpandAll').click()
    time.sleep(2)
    # 获取整个列表
    country_list = driver.find_elements_by_xpath('//*[@id="treeCountryGroup"]')  # 定位到整个树状结构列表元素
    list_name = []
    for item in country_list:
        name = item.text
        print(name)
        list_name.append(name)

    lists=list_name[0].split('\n')
    print(lists)
    print(len(lists))
    
	#获取树状列表长度,再和树状列表组成一个字典
    d=[]
    for i in range(1,len(lists)):
        d.append(i)
    print(d)
    f=zip(d,lists)
    f=dict(f)
    print(f)
    
    #字典的value和key 对调位置,通过value找key
    f1={
    
    v : k for k, v in f.items() }
    print(f1)
    
    #对xpath参数化
    driver.find_element_by_id('txtKeySearch').send_keys(c)
    time.sleep(1)
    print(f1[c])
    path='//*[@id="treeCountryGroup_{}_check"]'.format(f1[c])
    driver.find_element_by_xpath(path).click()
    time.sleep(2)
#方法调用
setting('ROI')

写了好多代码,应该有比这更简单的方法,刚学python,如果有好的方法在更新

猜你喜欢

转载自blog.csdn.net/zhaoweiya/article/details/107101082