今日内容
- 数据驱动
- 参数化
- 日志模块
- 基本应用
- 高级应用
1. JSON 文件定义
- JS 语言对象表示法. 是一种基于文本, 独立与语言, 轻量级的数据交换格式
- Web 项目数据交换格式多为: JSON 或 XML
- 移动端项目数据交换格式多为: JSON
2. JSON 文件语法规则
-
最外层可以是对象{}或者是数组[]
-
所有的数据必须是键值对(key-value)形式
- 所有的 key 必须是字符串类型
- 必须使用双引号
-
多条数据由逗点隔开
-
值的数据类型
- 字符串
- 数字类型
- 整数
- 浮点数
- 布尔类型(全小写)
- true
- false
- 空对象
- null
-
对象和数组可以相互嵌套
-
JSON演示
{ "name": "小明", "age": 18, "height": 1.85, "isMan": true, "school": null, "num": [1,2,3,4,5], "link": [ { "BaiDu": "http://www.baidu.com"}, { "黑马": "www.itheima.com"} ] }
3. JSON 文件的读写操作
无论是读取还是写入 JSON 文件, 都要使用 import json
-
读取 JSON(重点)
import json with open('./文件名.json', encoding='utf-8') as f: data = json.load(f) print('获取的 JSON 数据为:', data)
- 读取的方法名:
load()
- with open() 方法, 默认为 r 模式, 可以省略
- 读取的 JSON 文件内容会被自动转换为 Python 的字典数据(判断依据:布尔类型和空对象的语法格式)
- 读取的方法名:
-
写入 JSON 文件
import json dict_data = { "name": "小明", "isMan": False, "address": None} with open('./json_data.json', 'w', encoding='utf-8') as f: json.dump(dict_data, f)
- 写入的方法名:
dump()
- 在写入 JSON 文件时, with open() 方法, 需要指定为 w 模式
- 在写入 JSON 文件时, 中文会被自动转换为 unicode 编码(\u5c0f\u660e), 并不是乱码, 需要注意
- 写入的方法名:
4. 数据驱动案例一实现步骤
-
PO 对页面元素进行封装
- 代码演示1–公共方法类
""" 公共方法类 """ import time from selenium import webdriver class DriverUtil(object): """浏览器驱动工具类""" driver = None # 初始化状态 @classmethod def get_driver(cls): """获取驱动方法""" # 判断浏览器对象不存在时, 创建对象 if cls.driver is None: cls.driver = webdriver.Chrome() # 直接使用时需要修改此项(浏览器类型) cls.driver.get('http://cal.apple886.com/') # 直接使用时需要修改此项(项目地址) cls.driver.maximize_window() cls.driver.implicitly_wait(10) return cls.driver @classmethod def quit_driver(cls): """退出驱动方法""" # 判断浏览器对象存在时, 再执行退出 if cls.driver: cls.driver.quit() cls.driver = None if __name__ == '__main__': DriverUtil.get_driver() time.sleep(2) DriverUtil.quit_driver()
- 代码演示2–计算器页面
""" 计算器页面 """ from selenium.webdriver.common.by import By from utils import DriverUtil class CalcPage(object): """计算器-对象库层""" def __init__(self): self.driver = DriverUtil.get_driver() # 获取浏览器驱动对象 # self.num_btn = (By.ID, 'simple0') # 数字键 self.num_btn = (By.ID, 'simple{}') # 数字键 self.add_btn = (By.ID, 'simpleAdd') # 加号键 self.equal_btn = (By.ID, 'simpleEqual') # 等号键 self.result = (By.ID, 'resultIpt') # 计算结果 def find_num_btn(self, num): """数字键定位方法""" # Python 规范要求: 单行字符数量不超过 79 个(提高代码的可阅读性) # location = (self.num_btn[0], self.num_btn[1].format(num)) # return self.driver.find_element(location[0], location[1]) return self.driver.find_element(self.num_btn[0], self.num_btn[1].format(num)) def