请选择 进入手机版 | 继续访问电脑版

湖南新梦想

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 25|回复: 0

四种自动化测试模型实例及优缺点(二)

[复制链接]

3099

主题

3499

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12384
发表于 2022-8-4 17:00:59 | 显示全部楼层 |阅读模式
直接调用模块的登录和退出方法。
  # coding=utf-8'''Created on 2016-7-27@author: JenniferProject:发送邮件'''from selenium import webdriverimport timefrom test_5_2_public import Login  
  #由于公共模块文件命名为test_5_2_publicdriver=webdriver.Firefox()driver.implicitly_wait(30)driver.get(r'http://www.126.com/')  
  #字符串加r,防止转义。time.sleep(3)driver.switch_to.frame('x-URS-iframe')
  #调用登录模块Login().user_login(driver)time.sleep(10)
  #发送邮件#点击发件箱#_mail_component_61_61是动态id,所以不能用于定位#driver.find_element_by_css_selector('#_mail_component_61_61>span.oz0').click()
  #不能加u"//span[contains(text(),u'写 信')]",否则定位不到。#以下定位是查找span标签有个文本(text)包含(contains)'写 信' 的元素,该定位方法重要driver.find_element_by_xpath("//span[contains(text(),'写 信')]").click()#填写收件人driver.find_element_by_class_name('nui-editableAddr-ipt').send_keys(r'xxx@163.com')
  #填写主题#通过and连接更多的属性来唯一地标志一个元素driver.find_element_by_xpath("//input[@class='nui-ipt-input' and @maxlength='256']").send_keys(u'自动化测试')#填写正文#通过switch_to_frame()将当前定位切换到frame/iframe表单的内嵌页面中driver.switch_to_frame(driver.find_element_by_class_name('APP-editor-iframe'))#在内嵌页面中定位邮件内容位置
  emailcontext=driver.find_element_by_class_name('nui-scroll')
  #填写邮件内容emailcontext.send_keys(u'这是第一封[url=]自动化测试[/url]邮件')
  #通过switch_to().default_content()跳回最外层的页面#注:不要写成switch_to().default_content(),否则报AttributeError: SwitchTo instance has no __call__ methoddriver.switch_to.default_content()#driver.switch_to.parent_frame()
  #点击发送time.sleep(3)#有可能存在元素不可见(查看元素是灰色的),会报ElementNotVisibleException错误#包含发送二字的元素很多,所以还得再加上其他限制#sendemails=driver.find_element_by_xpath("//span[contains(text(),'发送')]")sendemails=driver.find_element_by_xpath("//span[contains(text(),'发送') and @class='nui-btn-text']")time.sleep(3)#校验邮件是否发送成功try:   
  assert '发送成功'
  in driver.page_sourceexcept AssertionError:   
  print '邮件发送成功'else:   
  print '邮件发送失败'#调用退出模块   
  Login().user_logout(driver)


  收信用例:
  直接调用模块的登录和退出方法。
  # coding=utf-8'''Created on 2016-7-27@author: JenniferProject:接收邮件'''from selenium import webdriverimport timefrom test_5_2_public import Logindriver=webdriver.Firefox()driver.implicitly_wait(30)driver.get(r'http://www.126.com/')  
  #字符串加r,防止转义。time.sleep(3)driver.switch_to.frame('x-URS-iframe')#调用登录模块Login().user_login(driver)time.sleep(10)#接收邮件#点击收信#以下定位是查找span标签有个文本(text)包含(contains)'收 信' 的元素,该定位方法重要driver.find_element_by_xpath("//span[contains(text(),'收 信')]").click()#校验是否进入收件箱,没报错即进入try:   
  #点击其中一封邮件   
  driver.find_element_by_xpath("//div[@sign='letter']").click()except Exception as e:   
  print eelse:   
  print '成功收信'#调用退出模块   
  Login().user_logout(driver)


  三,数据驱动测试
  1.概念:
  它将测试中的测试数据和操作分离,数据存放在另外一个文件中单独维护。
  通过数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。
  操作+重复操作+数据分开。
  2.优点:
  通过这种方式,将数据和重复操作分开,可以快速增加相似测试,完成不同数据情况下的测试。
  3.缺点
  暂无
  4.实例
  从excel表格读取用户名密码,登录邮箱。
  以下的用户名密码到时候自己去申请,就不将笔者的用户密码贴出来了。

  # coding=utf-8'''Created on 2016-7-28@author: JenniferProject:数据驱动测试,数据保存在excel中,需要导入xlrd模块'''from selenium import webdriverimport timeimport xlrd#将用户密码表格转换为用户密码列表def exceltolist(excelfile,colnameindex=0,by_index=0):    excelfile=xlrd.open_workbook(excelfile)   
  #打开excel表格#   
  table = excelfile.sheets()[by_index]     
  #默认获取sheet0页   
  table = excelfile.sheet_by_index(by_index)#默认获取sheet0页   
  nrows=table.nrows                        
  #获取excel的sheet0页的行数   
  colnames=table.row_values(colnameindex)   
  #默认获取第0行的列表数据:name和password两个值   
  list =[]                                 
  #建一个空列表,用来存放用户密码字典   
  for rownum in range(1,nrows):            
  #初始行为0,从第1行开始        
  row = table.row_values(rownum)        
  #获取某一行的列表数据        
  if row:            
  [url=]app[/url] = {}                          
  #建立一个空字典,存放某一组用户密码数据            
  for i in range(len(colnames)):   
  #目前是2               
  app[colnames] = row     
  #字典新增数据:循环两次,字典新增两对key-value            
  list.append(app)                  
  #将新增的字典数据,添加到列表数据中                     
  return listdef Login():   
  file=r'D:\pythontest\rightpassword\userpassword.xls'   
  userlist=exceltolist(file)   
  for i in range(len(userlist)):        
  driver=webdriver.Firefox()        
  driver.get(r'http://www.126.com/')  
  #字符串加r,防止转义。        
  time.sleep(3)            
  driver.switch_to.frame('x-URS-iframe')   
  #同上面语句一样,跳转到iframe框架        
  username=driver.find_element_by_name('email')        
  username.clear()        
  username.send_keys(userlist['name'])        
  time.sleep(0.1)               
  userpasswd=driver.find_element_by_name('password')        
  userpasswd.clear()        
  userpasswd.send_keys(userlist['password'])        
  time.sleep(0.1)               
  loginbt=driver.find_element_by_id('dologin')        
  loginbt.click()        
  time.sleep(3)        
  try:            
  assert '网易邮箱' in driver.title        
  except AssertionError:            
  print '用户%s邮箱登录失败'%(userlist['name'])        
  else:            
  print '用户%s邮箱登录成功'%(userlist['name'])               
  finally:            
  driver.quit()if __name__=='__main__':   
  Login()



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|湖南新梦想 ( 湘ICP备18019834号-2 )

GMT+8, 2022-8-16 03:57 , Processed in 0.041557 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表