selenium---条件选择勾选框

测试需求:如下图所示,要求根据设备使用人条件去自动勾选页面左侧的勾选框


首先获取到该页设备使用人和勾选框的元素列表,通过遍历设备使用人元素列表获取设备使用人文本,判断名字,假如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[@onclick="printerObject.delContainerSelect()"]').click()
    driver.switch_to.default_content()
    driver.find_element_by_xpath('//div/a[@class="layui-layer-btn0"]').click()



猜你喜欢

转载自blog.csdn.net/maybe_frank/article/details/79308982