博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python的模块与函数以及与自动化的结合
阅读量:5010 次
发布时间:2019-06-12

本文共 3710 字,大约阅读时间需要 12 分钟。

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()

使用模块中的函数或者类的时候,首先需要把模块导入,模块的导入是importimport可以直接导入模块,如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()

转载于:https://www.cnblogs.com/weikunzz/p/6710589.html

你可能感兴趣的文章
广告地址屏蔽
查看>>
收缩SqlServer数据库日记方法
查看>>
每日英语:15 places to find inspiration
查看>>
学习方法--提问
查看>>
【转】每天一个linux命令(3):pwd命令
查看>>
merge-two-sorted-lists
查看>>
MySQL(3)
查看>>
poj1061——扩展gcd水题
查看>>
UVa400.Unix ls
查看>>
POJ 2299 Ultra-QuickSort 归并排序、二叉排序树,求逆序数
查看>>
Educational Codeforces Round 60 (Rated for Div. 2) C. Magic Ship
查看>>
Windows 2008 R2系统开机时如何不让Windows进行磁盘检测?
查看>>
WP7应用开发笔记(18) 本地化与多语言
查看>>
解决 .so文件64与32不兼容问题
查看>>
归并排序法
查看>>
【剑指offer】面试题26:复杂链表的复制
查看>>
spark开发生成EXE
查看>>
Vue 全家桶介绍
查看>>
WPF Bitmap转Imagesource
查看>>
Java compiler level does not match the version of the installed Java project facet.解决方法
查看>>