1. 简介
这篇文章主要是给小伙伴或者童鞋们介绍和分享 python 几种骚操: 读取配置文件, 获取根目录的相对路径, 获取系统时间和格式化时间显示, 字符串切割等等操作. 为后边的自动化框架打下一个结实的基础.
2. Python 读取配置文件内容
本文来介绍下 Python 中如何读取配置文件. 任何一个项目, 都涉及到了配置文件和管理和读写, Python 支持很多配置文件的读写, 这里我们就介绍一种配置文件格式的读取数据, 叫 INI 文件. Python 中有一个类 ConfigParser 支持读 INI 文件.
2.1 新建一个文件夹
首先我们紧接着前边的内容, 在项目下, 新建一个文件夹, 叫 config, 然后在这个文件夹下新建一个 file 类型的文件: config.INI
2.1.1 代码实现:
2.1.2 参考代码:
- # this is config file, only store browser type and server URL
- [browserType]
- #browserName = Firefox
- browserName = Chrome
- #browserName = IE
- [testServer]
- URL = https://www.baidu.com
- #URL = http://www.google.com
2.2 获取当前项目的根目录的相对路径
然后百度搜索一下, python 中如何获取当前项目的根目录的相对路径这里采用:
os.path.dirname(os.path.abspath('.'))
2.3 新建测试类
最后, 在另外一个包下新建一个测试类, 用来测试读取配置文件是否正常.
2.3.1 代码实现:
2.3.2 参考代码:
- # coding=utf-8
- # 1. 先设置编码, utf-8 可支持中英文, 如上, 一般放在第一行
- # 2. 注释: 包括记录创建时间, 创建人, 项目名称.
- '''
- Created on 2019-12-13
- @author: 北京 - 宏哥 QQ 交流群: 705269076
- Project: 《手把手教你》系列进阶篇之 3-python+ selenium 自动化测试 - python 基础扫盲
- '''
- # 3. 导入模块
- import configparser
- import os
- class TestReadConfigFile(object):
- def get_value(self):
- root_dir = os.path.dirname(os.path.abspath('.')) # 获取项目根目录的相对路径
- print (root_dir)
- config = configparser.ConfigParser()
- file_path = os.path.dirname(os.path.abspath('.')) + '/config/config.ini'
- config.read(file_path)
- browser = config.get("browserType", "browserName")
- url = config.get("testServer", "URL")
- return(browser,url) # 返回的是一个元组
- trcf = TestReadConfigFile()
- print (trcf.get_value())
2.3.3 运行结果:
你可以试试更改 config.INI 的内容, 看看测试打印出来是不是你更改的东西, 在配置文件一般 #表示注释, 你想要哪行配置代码起作用, 你就把前面的 #去除, 并且在注释其他同一个区域. 在 INI 文件中 中括号包裹起来的部分叫 section, 了解一下就可以.
修改成如下图:
运行代码后, 控制台打印如下图的结果
3. Python 获取系统时间和格式化时间显示
前面一篇文章介绍了, Python 如何读取 config.INI 文件, 还有如何获取当前项目根目录相对路径写法. 在实际项目的开发, 获取项目根路径的相对路径写法是很有必要的, 不要去是绝对路径. 因为, 你自己开发的一个项目, 如果拷贝到别的电脑里, 发现运行不了, 需要更改很多文件的路径, 那是不是很失败. 本篇文章介绍如何去获取和打印格式化系统时间, 我们很多时候, 看到一些日志, 前面都会记录年月日, 时分秒, 甚至毫秒, 然后才是日志描述. 这一篇文章, 介绍时间获取和格式化时间, 就是为了后面, 如何写一个简单的日志类做铺垫的.
在 PyCharm 下的一个包, 右键, 新建一个 get_time.py 文件, 输入一下代码:
这里提醒一个小技巧: 在输入导入包的时候, 有些包你没有安装, 不是系统自带的, 可能会遇到红色下划线, 你需要鼠标悬停在这个红色下划线, 然后在这行的左侧有一个小灯泡, 鼠标点击这个小灯泡, 一般会有 import this xxx 或者 install xxx, 根据提示来导入包或者安装第三方插件.
3.1 代码实现:
3.2 参考代码:
- # coding=utf-8
- # 1. 先设置编码, utf-8 可支持中英文, 如上, 一般放在第一行
- # 2. 注释: 包括记录创建时间, 创建人, 项目名称.
- '''
- Created on 2019-12-13
- @author: 北京 - 宏哥 QQ 交流群: 705269076
- Project: 《手把手教你》系列进阶篇之 3-python+ selenium 自动化测试 - python 基础扫盲
- '''
- # 3. 导入模块
- import time
- class GetTime(object):
- def get_system_time(self):
- print (time.time()) # time.time() 获取的是从 1970 年到现在的间隔, 单位是秒
- print (time.localtime())
- new_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) # 格式化时间, 按照 2019-12-13 13:46:32 的格式打印出来
- print (new_time)
- gettime = GetTime()
- gettime.get_system_time()
3.3 运行结果:
运行代码后, 控制台打印如下图的结果
!!! 你自己试试如何打印出这样的效果: 20191213134750 的效果. 答案自己在文章最后查找.
4. Python 中字符串切割操作
本文来介绍 Python 中字符串切割操作, 在 Python 中自带的一个切割方法 split(), 这个方法不带参数, 就默认按照空格去切割字段, 如果带参数, 就按照参数去切割. 为了演示切割效果, 我们用百度搜索一个关键字, 然后去找一共找到了多个结果的数字.
例如, 百度搜索 "selenium", 查看找到了多少个结果, 我们需要单独摘取出这个数字.
相关脚本代码如下:
4.1 代码实现:
4.2 参考代码:
- # coding=utf-8
- # 1. 先设置编码, utf-8 可支持中英文, 如上, 一般放在第一行
- # 2. 注释: 包括记录创建时间, 创建人, 项目名称.
- '''
- Created on 2019-12-13
- @author: 北京 - 宏哥 QQ 交流群: 705269076
- Project: 《手把手教你》系列进阶篇之 3-python+ selenium 自动化测试 - python 基础扫盲
- '''
- # 3. 导入模块
- import time
- from selenium import webdriver
- class GetSubString(object):
- def get_search_result(self):
- driver = webdriver.Chrome()
- driver.maximize_window()
- driver.implicitly_wait(8)
- driver.get('https://www.baidu.com')
- driver.find_element_by_id('kw').send_keys('selenium')
- time.sleep(1)
- driver.find_element_by_id('su').click()
- time.sleep(1)
- search_result_string = driver.find_element_by_xpath("//*/div[@class='nums']").text
- print (search_result_string)
- new_string = search_result_string.split('约')[1] # 第一次切割得到 xxxx 个,[1] 代表切割右边部分
- print (new_string)
- last_result = new_string.split('个')[0] # 第二次切割, 得到我们想要的数字 [0] 代表切割参照参数的左边部分
- print (last_result)
- getstring = GetSubString()
- getstring.get_search_result()
4.3 运行结果:
运行代码后, 控制台打印如下图的结果
5. 小结
5.1 答案揭晓
5.1.1 参考代码
首先把上面的提问在这里把答案公布一下, 其实很简单的, 只需要修改一处地方即可以实现宏哥说的那种效果, 聪明的你答对了没???
- # coding=utf-8
- # 1. 先设置编码, utf-8 可支持中英文, 如上, 一般放在第一行
- # 2. 注释: 包括记录创建时间, 创建人, 项目名称.
- '''
- Created on 2019-12-13
- @author: 北京 - 宏哥 QQ 交流群: 705269076
- Project: 《手把手教你》系列进阶篇之 3-python+ selenium 自动化测试 - python 基础扫盲
- '''
- # 3. 导入模块
- import time
- class GetTime(object):
- def get_system_time(self):
- print (time.time()) # time.time() 获取的是从 1970 年到现在的间隔, 单位是秒
- print (time.localtime())
- new_time = time.strftime('%Y%m%d%H%M%S', time.localtime()) # 格式化时间, 按照 2017-04-15 13:46:32 的格式打印出来
- print (new_time)
- gettime = GetTime()
- gettime.get_system_time()
5.1.2 代码运行效果
将上述代码运行后看一下是不是宏哥说的那种效果
好了, 今天的分享就到这里吧!!! 谢谢各位的耐心阅读.
您的肯定就是我进步的动力. 如果你感觉还不错, 就请鼓励一下吧! 记得随手点波 推荐 不要忘记哦!!!
别忘了点推荐留下您来过痕迹
来源: https://www.cnblogs.com/du-hong/p/12030143.html