• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

自动化测试----selenium一

武飞扬头像
半夏而凉
帮助1

目录

什么是自动化测试

单元测试

接口自动化测试

UI自动化测试

selenium介绍

webdriver API

元素的定位

 操作测试对象

添加等待

打印信息

对浏览器的操作

键盘事件

鼠标事件


什么是自动化测试

自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。

自动化测试包括UI自动化,接口自动化,单元测试自动化。

单元测试

最大的投入应该在单元测试上,单元测试运行的频率也更加高。java的单元测试框架是Junit。

接口自动化测试

接口测试就是API测试,相对于UI自动化API自动化更加容易实现,执行起来也更稳定。
接口自动化测试的特点:

  • 可在产品前期,接口完成后介入
  • 用例维护量小
  • 适合接口变动较小,界面变动频繁的项目

UI自动化测试

UI自动化测试更加贴近用户的需求和软件系统的实际业务。并且有时候我们不得不进行UI层的测试。

UI自动化测试的特点

  • 用例维护量大
  • 页面相关性强,必须后期项目页面开发完成后介入
  • UI测试适合与界面变动较小的项目

UI自动化的好处:

  1. 减少人为出错的几率,创建一个可靠的测试过程
  2. 可以进行繁琐的测试(比如测试过程一致,每次输入数据不同,ddt)
  3. 可以进行大量重复的测试,回归测试
  4. 可以节省人力资源
  5. 脚本的复用性
  6. 可以进行手工测试很难执行的测试(精准计时)

selenium介绍

Selenium是web应用中基于UI的自动化测试框架,支持多平台、多浏览器、多语言。

现在我们说起selenium,一般指的是Selenium2.0。它有由Selenium IDE,Webdriver,Selenium Grid组成。

webdriver API

首先看一个简单是自动化测试脚本

  1.  
    # coding = utf-8 //防止乱码,在编辑器里面可以不用加,因为编辑器默认的就是UTF-8模式。
  2.  
    from selenium import webdriver //导入webdriver工具包,这样就可以使用里面的API
  3.  
    import time
  4.  
    browser = webdriver.Firefox()
  5.  
    //获得被控制浏览器的驱动,这里是获得Firefox的,当然还可以获得Chrome浏览器,不过要想使这一段代码有效,必须安装相应的浏览器驱动
  6.  
    time.sleep(3)
  7.  
    browser.get("http://www.百度.com")
  8.  
    time.sleep(3)
  9.  
    browser.find_element_by_id("kw").send_keys("selenium")
  10.  
    //通过元素的ID定位想要操作的元素,并且向元素输入相应的文本内容 。
  11.  
    time.sleep(3)
  12.  
    browser.find_element_by_id("su").click()
  13.  
    //通过元素的ID定位到元素,并进行点击操作。
  14.  
    browser.quit() //退出并关闭窗口

注:browser.close()也可以关闭窗口。两者的区别是:close方法关闭当前的浏览器窗口,quit方法不仅关闭窗口,还会彻底的退出webdriver,释放与driverserver之间的连接。所以简单来说quit是更加彻底的close,quit会更好的释放资源。

元素的定位

原则:不管用什么方式定位,这个方式必须全局唯一

常用的定位元素的方法有:

  • id   如果存在,可以全局唯一定位一个元素
  • name  存在并且全局唯一才可以定位到
  • class name  存在并且全局唯一才可以定位到
  • link text   必须是链接,且链接内容全局唯一,才可以定位到
  • partial link text  必须是链接,且链接内容全局唯一,才可以定位到(链接的部分内容就可以)
  • tag name   必须全局唯一才可以定位到(标签名)
  • xpath   任何一个元素都可以定位到(右键-copy-copyXpath)
  • css selector    (右键-copy-copyselector)
  1.  
    #coding=utf-8
  2.  
    from selenium import webdriver
  3.  
    import time
  4.  
    browser = webdriver.Chrome()
  5.  
    browser.get("http://www.百度.com")
  6.  
    #########百度输入框的定位方式##########
  7.  
    #通过id 方式定位
  8.  
    browser.find_element_by_id("kw").send_keys("selenium")
  9.  
    #通过name 方式定位
  10.  
    browser.find_element_by_name("wd").send_keys("selenium")
  11.  
    #通过tag name 方式定位
  12.  
    browser.find_element_by_tag_name("input").send_keys("selenium") 不能成功,因为
  13.  
    input太多了不唯一。
  14.  
    #通过class name 方式定位
  15.  
    browser.find_element_by_class_name("s_ipt").send_keys("selenium")
  16.  
    #通过CSS 方式定位
  17.  
    browser.find_element_by_css_selector("#kw").send_keys("selenium")
  18.  
    #通过xphan 方式定位
  19.  
    browser.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
  20.  
    #通过link_text 方式定位
  21.  
    browser.find_element_by_link_text("新闻").click()
  22.  
    ############################################
  23.  
    browser.find_element_by_id("su").click()
  24.  
    time.sleep(3)
  25.  
    browser.quit()
学新通

 操作测试对象

webdriver 中比较常用的操作对象的方法有下面几个:

  1. send_keys() 向元素发送信息
  2. click()点击元素
  3. submit()提交表单
  4. clear()清除元素的内容
  5. text 获取元素的内容

添加等待

固定等待 sleep()

我们需要引入time包,固定等待必须等够括号中的时间

  1.  
    import time
  2.  
    time.sleep(3)

智能等待

通过implicitly_wait() 方法就可以方便的实现智能等待;implicitly_wait()的用法比time.sleep()
更智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。当脚本执行到某个元素定位时,如果元素可以定位,则继续执行;如果元素定位不到,则它以轮询的方式不断的判断元素是否被定位到。直到超出设置的时长。

browser.implicitly_wait(30)  //智能等待30秒

打印信息

打印title

  1.  
    #coding = utf-8
  2.  
    from selenium import webdriver
  3.  
    driver = webdriver.Chrome()
  4.  
    driver.get('http://www.百度.com')
  5.  
    print(driver.title) # 把页面title 打印出来

打印URL

  1.  
    #coding = utf-8
  2.  
    from selenium import webdriver
  3.  
    driver = webdriver.Chrome()
  4.  
    driver.get('http://www.百度.com')
  5.  
    print(driver.current_url) #打印url

对浏览器的操作

浏览器最大化

browser.maximize_window()

设置浏览器宽和高

browser.set_window_size(width, high)  //数字为像素点

操作浏览器前进、后退

  1.  
    #浏览器的前进
  2.  
    browser.forward()
  3.  
    #浏览器的后退
  4.  
    browser.back()

控制浏览器滚动条

  1.  
    #将浏览器滚动条滑到最顶端
  2.  
    document.documentElement.scrollTop=0
  3.  
    #将浏览器滚动条滑到最底端
  4.  
    document.documentElement.scrollTop=10000

键盘事件

要使用键盘按键,必须引入keys 包:
from selenium.webdriver.common.keys import Keys

通过send_keys()调用按键:
send_keys(Keys.TAB) # TAB
send_keys(Keys.ENTER) # 回车
send_keys(Keys.SPACE) #空格键
send_keys(Keys.ESCAPE) #回退键(Esc)
......

键盘组合键用法

send_keys(Keys.CONTROL,'a') #全选(Ctrl A)
send_keys(Keys.CONTROL,'c') #复制(Ctrl C)
send_keys(Keys.CONTROL,'x') #剪贴(Ctrl X)
send_keys(Keys.CONTROL,'v') #粘贴(Ctrl V)

鼠标事件

要使用鼠标事件需要导入工具包:
from selenium.webdriver.common.action_chains import ActionChains

  1.  
    #coding=utf-8
  2.  
    from selenium import webdriver
  3.  
    from selenium.webdriver.common.keys import Keys
  4.  
    from selenium.webdriver.common.action_chains import ActionChains
  5.  
    import time
  6.  
    driver = webdriver.Chrome()
  7.  
    driver.get("http://news.百度.com")
  8.  
    qqq =driver.find_element_by_xpath(".//*[@id='s_btn_wr']")
  9.  
    ActionChains(driver).context_click(qqq).perform() #右键
  10.  
    ActionChains(driver).double_click(qqq).perform() #双击
  11.  
    #定位元素的原位置
  12.  
    element = driver.find_element_by_id("s_btn_wr")
  13.  
    #定位元素要移动到的目标位置
  14.  
    target = driver.find_element_by_class_name("btn")
  15.  
    #执行元素的移动操作
  16.  
    ActionChains(driver).drag_and_drop(element, target).perform()
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfkaggg
系列文章
更多 icon
同类精品
更多 icon
继续加载