也有两天没更新了 哎~这学期的课还挺多的 都是利用课余的一些时间来学习自动化测试(抱怨脸(╯▔皿▔)╯)
这两天我在练习的是一个相对完整的Web自动化测试,也是对前些日子学习内容的整合,具体来说如下:
1.打开浏览器
2.输入网址打开网页(我是以链家网为练习的,因为想到明年毕业后要租房子hhhhhh)
3.找到网页上我们需要的元素:登录元素、登录方式元素(可能会有多种登录方式,所以我选择的是最基础的账号密码登录)、账号元素、密码元素、确认登录元素
4.输入元素内容:账号和密码
5.检查登录结果
为了打开页面的稳定 我设置了等待时间
用了两种方法 一个是time.sleep 还有一个是Webdriverwait(小声嘀咕:听说sleep不是特别好,但是挺方便的...)
首先,先抛开上述的五步,把等待时间的方法先设置好 (之前不会用插入代码的功能,现在学会了!)
def get_ele_times(driver,times,func):
return WebDriverWait(driver,times).until(func)
然后依次进行五个步骤,代码如下:
#打开Chrome浏览器模块
def openBrowser():
return webdriver.Chrome()
#输入网址并打开网页页面模块
def openUrl(driver,url):
driver.get(url)
driver.set_window_size(1300,800)
#定位网页上的五个元素(登录元素、登录方式元素、账号元素、密码元素、确认登录元素)
def findElements(browser,arg):
if 'login_text' in arg:
login_ele=get_ele_times(browser,5,lambda x:browser.find_element_by_link_text(arg['login_text']))
login_ele.click()
time.sleep(3)
way_ele=browser.find_element_by_link_text(arg['way_text'])
way_ele.click()
time.sleep(1.5)
account_ele=browser.find_element_by_css_selector(arg['account_select'])
password_ele=browser.find_element_by_css_selector(arg['password_select'])
confirm_ele=browser.find_element_by_css_selector(arg['confirm_select'])
return account_ele,password_ele,confirm_ele
#输入元素内容
def sendVals(eletuple,arg):
listkey=['name','pwd']
i=0
for key in listkey:
eletuple[i].send_keys('')
eletuple[i].clear()
eletuple[i].send_keys(arg[key])
i+=1
time.sleep(2)
eletuple[2].click()
#检查结果
def checkResults(browser,arg):
try:
browser.find_element_by_link_text(arg[check_text])
print('Test Successfully')
except:
print('Test Unsuccessfully')
最后一起写在大函数login_test里面:
def login_test(ele_dict,user_dict):
browser=openBrowser()
openUrl(browser,ele_dict['url'])
ele_tuple=findElements(browser,ele_dict)
sendVals(ele_tuple,user_dict)
checkResults(browser,ele_dict)
对了,还有主函数,里面主要是放一些数据量,比如url,账号,密码等等,这样,可以将方法和数据分离开来,不会那么的乱,
在下次测试的时候,还可以使用本次脚本,只不过把其中需要变的数据改一下就好了。
if __name__ == '__main__':
url='http://bj.lianjia.com/?utm_source=baidu&utm_medium=pinzhuan&utm_term=biaoti&utm_content=biaotimiaoshu&utm_campaign=sousuo&ljref=pc_sem_baidu_ppzq_x'
login_text="登录"
way_text='账号密码登录'
account_select='#con_login_user > form > ul > li.item.border-t.userName > input'
password_select='#con_login_user > form > ul > li.item.border-b.pwd > input'
confirm_select='#con_login_user > form > ul > li.li_btn > a'
account='13823920110'
password='abc123'
check_text='请输入图形验证码'
ele_dict={'url':url,'login_text':login_text,'way_text':way_text,'account_select':account_select,'password_select':password_select,'confirm_select':confirm_select,'check_text':check_text}
user_dict={'name':account,'pwd':password}
login_test(ele_dict,user_dict)
time.sleep(5)
其实在学自动化测试之前,我也没什么Python基础,但是学校里上过Java课,有一些编程基础。不过,我更喜欢python一些,功能强大并且相比Java简洁不少。
ps:对了,上面的测试过程,我是默认以点击登录按钮并出现“请输入图形验证码”为测试成功的证明的,也查阅了一些如何测试验证码之类的资料,我...有些看不懂(T_T)...