专栏首页北京宏哥《手把手教你》系列进阶篇之3-python+ selenium自动化测试 - python几种骚操作你都知道吗?(详细教程)

《手把手教你》系列进阶篇之3-python+ selenium自动化测试 - python几种骚操作你都知道吗?(详细教程)

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 代码运行效果

将上述代码运行后看一下是不是宏哥说的那种效果

好了,今天的分享就到这里吧!!!谢谢各位的耐心阅读。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python学习 -女神或者男神把微信消息撤回后好慌,有了这个妈妈再也不担心你看不到女神或者男神撤回的消息了(超详解)

      有时候在忙工作,女朋友发了一个消息,就撤回了,但是人天生的都有一颗好奇心,而且在当今这个时代找个女朋友不容易,一个程序猿找一个女朋友更是不容易的。人家好不容...

    北京-宏哥
  • 《手把手教你》系列进阶篇之4-python+ selenium自动化测试 - python几种超神操作你都知道吗?(详细教程)

      今天分享和讲解的超神操作,对于菜鸟来说是超神的操作,对于大佬来说也就是几个简单方法的封装和调用。这里讲解和分享这部分主要是为了培养小伙伴们和童鞋们的面向对...

    北京-宏哥
  • python接口自动化(四十二)- 项目结构设计之大结局(超详解)

      这一篇主要是将前边的所有知识做一个整合,把各种各样的砖块---模块(post请求,get请求,logging,参数关联,接口封装等等)垒起来,搭建一个房子。...

    北京-宏哥
  • python练习题-day19

    1、将字符串的时间"2017-10-10 23:40:00"转换为时间戳和时间元组

    郭耀华
  • Python time模块详解(时间戳↔元组形式↔格式化形式三者转化)

    在Python中, time有三种表示形式 1 时间戳:1970年1月1日之后的秒 2 元组格式化形式 包含了:年、日、星期 得到time.stru...

    学到老
  • Python-time模块一、python time模块的简介 二、python time模块函数

    注意:时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.tim...

    意气相许的许
  • python 格式化日期

    (1)time.asctime(time.localtime(time.time()))

    用户2398817
  • python实现时间的比较

    下面介绍下Python中比较两个日期大小的脚本. 在实际工作中...

    用户2398817
  • python time模块的使用

    我们先导入必须用到的一个module >>> import time 设置一个时间的格式,下面会用到 >>>ISOTIMEFORMAT=’%Y-%m-%d %X...

    用户2398817
  • python - 获取时间戳(10位和1

    在python 开发web程序时,需要调用第三方的相关接口,在调用时,需要对请求进行签名。需要用到unix时间戳。 在python里,在网上介绍的很多方法...

    用户2398817

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动