我的需求是这样的:
获取树状列表所有元素,然后可以根据元素勾选对应的复选框
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,如果有好的方法在更新