测试需求:如下图所示,要求根据设备使用人条件去自动勾选页面左侧的勾选框
首先获取到该页设备使用人和勾选框的元素列表,通过遍历设备使用人元素列表获取设备使用人文本,判断名字,假如text="yanfukun",序号num加入到列表list中。再遍历列表list,通过选择框元素索引去勾选选择框,即可完成上面需求,注意索引取值减一。
代码如下:
for x in range(1,7):
ms = driver.find_element_by_xpath('//iframe[2]')
driver.switch_to.frame(ms)
time.sleep(1)
driver.find_element_by_xpath('//div/a[contains(@onclick,"新增打印设备")]').click()
driver.switch_to.default_content()
time.sleep(1)
ms1 = driver.find_element_by_xpath('//div[@class="layui-layer-content"]/iframe')
driver.switch_to.frame(ms1)
driver.find_element_by_xpath('//div[@class="col-sm-7"]/input[@name="device_address"]').clear()
driver.find_element_by_xpath('//div[@class="col-sm-7"]/input[@name="device_address"]').send_keys('localhost')
driver.find_element_by_xpath('//div/input[@name="device_port"]').clear()
driver.find_element_by_xpath('//div/input[@name="device_port"]').send_keys('8000')
time.sleep(1)
Select(driver.find_element_by_xpath('//div/select[@name="device_name"]')).select_by_value('Fax')
time.sleep(1)
Select(driver.find_element_by_xpath('//select[@name="print_format" and @required]')).select_by_value(str(x))
driver.find_element_by_xpath('//div[@class="col-sm-7"]/input[@name="printer_name"]').clear()
driver.find_element_by_xpath('//div[@class="col-sm-7"]/input[@name="printer_name"]').send_keys('yanfukun')
driver.find_element_by_xpath('//div[@class="col-sm-4 col-sm-offset-5"]/button').click()
driver.switch_to.default_content()
time.sleep(4)
ms2 = driver.find_element_by_xpath('//iframe[2]')
driver.switch_to.frame(ms2)
# ----------------核心逻辑代码------------------
elements_1 = driver.find_elements_by_xpath('//tbody[1]/tr/td[5]')
elements_2 = driver.find_elements_by_xpath('//td/input[@type="checkbox"]')
#print(elements_2)
list = []
num = 1
for x in elements_1:
text1 = x.text
#print(text1)
if text1 == "yanfukun":
list.append(num)
num = num + 1
else:
num = num + 1
print(list)
for y in list:
#print(y)
elements_2[y-1].click()
time.sleep(0.5)
# ----------------核心逻辑代码------------------
driver.find_element_by_xpath('//div/a[@οnclick="printerObject.delContainerSelect()"]').click()
driver.switch_to.default_content()
driver.find_element_by_xpath('//div/a[@class="layui-layer-btn0"]').click()