• selenium 测试_2


    python + selenium

    selenium 窗口切换:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time
    
    driver = webdriver.Firefox()
    driver.get("http://bj.ganji.com/")
    time.sleep(3)
    
    # 获取句柄
    handle = driver.current_window_handle
    print("获取到当前的handle:%s" % handle)
    
    # 获取点击后新开页面的handle名字
    driver.find_elements_by_class_name("dt-t")[0].click()
    handle1 = driver.current_window_handle
    print("获取到当前的handle:%s" % handle1)
    
    # 切换到最后一个窗口
    driver.switch_to_window(handles[-1])
    
    # 判断是否切换成功:
    # 可根据title判断
    print(driver.title)
    # 可根据页面唯一元素判断
    
    # 新页面的元素操作完了,回到第一个页面
    driver.close()  # 关闭当前窗口
    driver.switch_to_window(handle)
    print(driver.title)
    
    # 关闭全部窗口,退出进程
    driver.quit()
    

    下拉框,select :

    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    import time
    driver = webdriver.Firefox()
    url = "https://www.baidu.com"
    driver.get(url)
    time.sleep(3)
    
    
    # 1、下拉框
    mouse = driver.find_element("link text", "设置")
    ActionChains(driver).move_to_element(mouse).perform()
    time.sleep(0.5)
    driver.find_element("link text", "搜索设置").click()
    time.sleep(1)
    
    # 方法一:直接定位
    # 选择下拉框选项的第三项
    driver.find_element_by_xpath(".//*[@id='nr']/option[3]").click()
    # 若此时点击后,下拉选项未收回,可点击整个下拉框,收回下拉选项
    driver.find_element_by_xpath(".//*[@id='nr']").click()
    
    # 方法二:二次定位
    # 第一步:定位下拉框
    parent = driver.find_element_by_id("nr")
    # 第二步:在下拉框中,定位子元素,并操作
    parent.find_element_by_xpath('.//option[@value="20"]').click()
    
    # select用法:
    from selenium.webdriver.support.select import Select
    # 先定位到下拉框
    s = driver.find_element_by_id("nr")
    
    # 第一种:根据索引定位(从0开始)
    Select(s).select_by_index(0)
    # 收回下拉选项
    s.click()
    
    # 第二种:根据value属性定位
    # 如:value = 50
    Select(s).select_by_value("50")
    # 收回下拉选项
    s.click()
    
    
    # 第三种:根据选项内容定位
    Select(s).select_by_visible_text("每页显示20条")
    # 收回下拉选项
    s.click()
    

    登录测试:

    import xlrd
    class ExcelUtil():
    
        def __init__(self, excelPath, sheetName):
        #def __init__(self, excelPath, sheetName):
            self.data = xlrd.open_workbook(excelPath)
            self.table = self.data.sheet_by_name(sheetName)
            # 获取第一行作为key值
            self.keys = self.table.row_values(0)
            # 获取总行数
            self.rowNum = self.table.nrows
            # 获取总列数
            self.colNum = self.table.ncols
    
        def dict_data(self):
            if self.rowNum <= 1:
                print("总行数小于1")
            else:
                r = []
                j=1
                for i in range(self.rowNum-1):
                    s = {}
                    # 从第二行取对应values值
                    values = self.table.row_values(j)
                    for x in range(self.colNum):
                        s[self.keys[x]] = values[x]
                    r.append(s)
                    j+=1
                return r
    
    if __name__ == "__main__":
        # filepath = "D:\test\web-project\5ke\testdata.xlsx"
        filepath = "E:\testdata.xlsx"
        sheetName = "登录"
        data = ExcelUtil(filepath, sheetName)
        print(data.dict_data())
    

    img

    img

    img

  • 相关阅读:
    mysql分表技术
    TP5.0 excel 导入导出
    整理:手机端弹出提示框,使用的bootstrap中的模态框(modal,弹出层),比kendo弹出效果好
    Bootstrap表单验证插件bootstrapValidator使用方法整理
    input属性为number时,如何去掉+、-号?
    input 属性为 number,maxlength不起作用如何解决?
    mysql给root开启远程访问权限
    thinkphp——通过在线编辑器添加的内容在模板里正确显示(只显示内容,而不是html代码)
    解决网站请求速度慢的一些方法
    JS封闭函数、闭包、内置对象
  • 原文地址:https://www.cnblogs.com/shaozheng/p/12875951.html
Copyright © 2020-2023  润新知