Python的模块与函数以及与自动化的结合
3
模块与函数
3.1程序结构
python的程序由package,module,function组成,分别是包,模块,函数。模块是函数和类的集合,包,模块,函数之间的关系如下:
3.2模块
python的程序就是由模块来组成,一个python文件可以看成是一个模块,而模块一般由代码,函数,或者类组成。如下代码,创建demo.py文件,编写一个自动化的测试脚本,demo.py文件就是模块,见代码:
#!coding:utf-8
from seleniumimport webdriver
driver=webdriver.Firefox()
driver.maximize_window()
driver.get('http://www.baidu.com')
element=driver.find_element_by_id('kw')
element.send_keys('selenium')
driver.quit()
使用模块中的函数或者类的时候,首先需要把模块导入,模块的导入是import,import可以直接导入模块,如import
time。如果不想使用程序的前缀,可以使用from
... import ...,如from
time import sleep。
模块的属性:__name__一般是判断是否是程序的入口,见程序的实例代码:
#!coding:utf-8
from seleniumimport webdriver
driver=webdriver.Firefox()
driver.maximize_window()
driver.get('http://www.baidu.com')
element=driver.find_element_by_id('kw')
element.send_keys('selenium')
driver.quit()
if__name__=='__main__':
print u'主程序运行'
else:
print u'Sorry,程序被另外的模块调用'
3.3函数
python的函数是是一段可重复多次调用的代码,依据参数,来返回结果。python的函数定义非常简单,如下定义一个二个数相加的方法,见代码:
def add(x,y):
return x+y
print add(2,3)
对自动化的测试脚本进行函数化,见代码:
def test():
driver=webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('http://www.baidu.com')
driver.quit()
test()
OK,我们把百度登录的代码再次打印出来,然后进行函数化,创建文件baidu.py,百度登录退出的源码为:
#!coding:utf-8
from seleniumimport webdriver
fromselenium.webdriver.common.action_chains import ActionChains
from time import sleep
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('http://www.baidu.com')
driver.find_element_by_link_text(u'登录').click()
driver.find_element_by_id('TANGRAM__PSP_8__userName').send_keys('850460807@qq.com')
driver.find_element_by_id('TANGRAM__PSP_8__password').send_keys('cl070209')
driver.find_element_by_id('TANGRAM__PSP_8__submit').click()
element=driver.find_element_by_xpath(".//*[@id='s_username_top']/span")
#获取用户昵称
niCheng=element.text
sleep(3)
ActionChains(driver).move_to_element(element).perform()
sleep(3)
driver.find_element_by_xpath(".//*[@id='s_user_name_menu']/div/a[5]").click()
driver.find_element_by_xpath(".//*[@id='tip_con_wrap']/div[3]/a[3]").click()
assert text in u'百度昵称'
函数化后的文件为location.py,我们把需要封装的公共方法封装在location.py的文件中,location.py的文件源码为:
#!coding:utf-8
from seleniumimport webdriver
from selenium.webdriver.common.action_chainsimport ActionChains
from time import sleep
deffindId(driver,id):
f=driver.find_element_by_id(id)
return f
deffindLinkText(driver,linkText):
f=driver.find_element_by_link_text(linkText)
return f
def findXpath(driver,xpath):
f=driver.find_element_by_xpath(xpath)
return f
#登录方法
deflogin(driver,username='liwangpingmysql@outlook.com',passwd='194935server'):
findLinkText(driver,u'登录').click()
sleep(2)
findId(driver,'TANGRAM__PSP_8__userName').send_keys(username)
sleep(2)
findId(driver,'TANGRAM__PSP_8__password').send_keys(passwd)
sleep(2)
findId(driver,'TANGRAM__PSP_8__submit').click()
sleep(3)
#退出方法
def exit(driver):
sleep(2)
element=findXpath(driver,".//*[@id='s_username_top']/span")
ActionChains(driver).move_to_element(element).perform()
sleep(2)
findXpath(driver,".//*[@id='s_user_name_menu']/div/a[5]").click()
sleep(2)
findXpath(driver,".//*[@id='tip_con_wrap']/div[3]/a[3]").click()
#获取昵称方法
defgetNiCheng(driver):
element=findXpath(driver,".//*[@id='s_username_top']/span")
return element.text
在baidu.py调用封装成函数的文件,简化自动化的测试脚本,baidu.py文件的源码为:
#coding:utf-8
from seleniumimport webdriver
fromselenium.webdriver.common.action_chains import ActionChains
from time import sleep
import location
driver=webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('http://www.baidu.com')
location.login(driver)
text=location.getNiCheng(driver)
location.exit(driver)
assert text in u'清晨无涯'
driver.quit()
Python的模块与函数以及与自动化的结合的更多相关文章
- 自学Python之路-Python基础+模块+面向对象+函数
自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python 1.1 自学Python1.1-简介 1.2 自学Python1.2-环境的 ...
- Python OS模块常用函数说明
Python的标准库中的os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Wi ...
- python os模块进程函数
Table of Contents 1. 系统进程 2. 举例 2.1. os.fork 2.2. os.exec 和 os.system 2.3. os.wait 3. 总结 系统进程 今天在看&l ...
- Python标准模块--built-ins函数
1.Python内置函数 2.Python内置函数举例 2.1 数学运算 abs,计算绝对值: >>> abs(-1) 1 >>> abs(3) 3 round,四 ...
- python os模块实用函数
os.sep可以取代操作系统特定的路径分隔符.windows下为 “\\” os.name字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'pos ...
- Python re 模块findall() 函数返回值展现方式详解
findall 函数: 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表. 注意: match 和 search 是匹配一次 findall 匹配所有,mat ...
- Python os模块常用函数详解
当前使用平台: os.name #返回当前使用平台的代表字符,Windows用'nt'表示,Linux用'posix'表示 当前路径和文件 os.getcwd() #返回当前工作目录 os.listd ...
- python os模块 常用函数
os.getcwd() 获取当前工作目录 os.listdir() 返回指定目录下的所有文件和目录 os.remove() 删除单个文件 os.path.split() 以元祖形式返回一个路径的目录和 ...
- python re模块findall使用
今天练习re模块时候出现了一个很奇怪的问题,同样的正则表达式用re.search()与用re.compile().findall()匹配出来的结果不一致. 很是奇怪,故此记录一下,防止以后碰到类似情况 ...
随机推荐
- opencv中各种矩阵乘的差别
尊重原创,转载请注明:http://blog.csdn.net/tangwei2014 OpenCV中每次遇到矩阵乘法就乱,各种翻各种查. 这次总结了一下.为了简单明了,还是让样例说话. 1. Mat ...
- Zigbee-CC2530开发板协议栈-改动发射功率
CC2530 控制输出功率的寄存器是 TXPOWER: 推荐功率设置: 协议栈默认的设置是 0xd5,为了扩展信号传输的距离,我把TXPOWER寄存器值改为0xf5, 此时输出功率为4.5dBm. ...
- MAJOR-MINOR-MKDEV
标记一下,容易忘,以免每次查代码. ./include/linux/types.h:21:typedef __u32 __kernel_dev_t; ./include/linux/types.h:2 ...
- python模块学习之six模块
Six:Python 2和3兼容性库 Six提供了简单的实用程序,用于覆盖Python 2和Python 3之间的差异.它旨在支持在Python 2和3中都可以进行修改的代码库. 六个只包含一个Pyt ...
- c++如何new构造函数是protected的对象
如果确实要new的话,可以继承这个类,然后new派生类,再转换为基类指针
- linux mount-umount命令常用记录
每次挂在u盘都忘记,这次记录下. umount命令: 必杀:umount -l /dev/sda1 (有时候卸载不能卸,加-l(不是1,是小写字母l)参数,表示在设备不忙时卸载设备,就可成功卸载设备) ...
- 【原创】菜鸟版Android 笔记1- Android架构和Application
Android架构 图1 Android架构自上而下名称为应用层.应用框架层.运行库和Adroid虚拟机层. Linux内核层. 1. 应用层 应用层像一座大厦里面的砖瓦.我们所做的开发基本上都在应用 ...
- python 开发技巧(0)-- 各个系统的python安装
window安装 Python的安装: 1.进入Python官方网站下载安装包 点击导航栏的 Downloads 会自动识别你的windows系统 你会看到 Python3.6.2 和 Pytho ...
- Git使用技巧(2)-- 基本操作
常用 Git 命令清单 作者: 阮一峰 编辑更新:shifu204 日期: 2016年9月 1日 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练 ...
- Audiosink design
Audiosink的设计,需要满足下列一些需求: 良好的chain_based 支持.绝大多数简单playback pipelines都是将音频数据从decoder直接push给audiosink; ...