• Selenium 基础知识


    被测产品是B/S 结构,那么推荐selenium

    selenium 并不是单纯的一个工具,他是一组工具的集合

    1、 selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能)(快速的创建bug重现脚本,在测试人员的测试过程中,发现了bug之后可以通过IDE将重现的步骤录制下来,以帮助开发人员更容易的重现bug。

    2、Selenium Grid是一种自动化的测试辅助工具)

      (1)并行执行

      (2)通过一个主机统一控制用例在不同环境、不同浏览器下运行。

      (3)灵活添加变动测试机

    3、selenium RC 是selenium 家族的核心工具

        通过selenium RC 的服务器作为代理服务器去访问应用从而达到测试的目的。

    selenium 2.0 = selenium 1.0 + WebDriver (WebDriver 是selenium RC 的替代品,WebDriver通过原生浏览器支持或者浏览器扩展直接控制浏览器)

    基础知识点

    一、selenium元素定位(8种定位元素的方法)

    定位一组元素的方法和单个元素方法类似,唯一的区别是在单词 element 后面多加了一个 s

     · find_element_by_id()

     · find_element_by_name()

     · find_element_by_class_name()

     · find_element_by_tag_name()

     · find_element_by_link_text()

     · find_element_by_partial_link_text():其实就是链接中的部分内容,比如整体链接叫做 hao123,我们可以只通过 hao 或者 123

     · find_element_by_xpath()

     · find_element_by_css_selector()

     ✓ 使用的时候就在前面加个 driver.find_element_by_id() 就可以跳动这个方法

    e.g.practice_basic/webdriver_functions

    二、控制浏览器操作

     · 控制浏览器窗口大小(set_window_size()方法来设置浏览器的大小)。driver.set_window_size() e.g.practice_basic/set_window_size

     · 控制浏览器后退、前进(在使用浏览器浏览网页时,浏览器提供了后退和前进按钮,可以方便地在浏览过的网页之间切换,WebDriver也提供了对应的back()和forward()方法来模拟后退和前进按钮)

    driver.back()        ;      driver.forward() eg: practice_basic/back_forward

    • 刷新当前页面  driver.refresh()

    三、Webdriver 常用方法 e.g. webdriver_common_functions

    • 点击和输入 clear() :清除文本 ;send_keys(value):模拟按键输入;click() 单击元素 
    • submit()方法用于提交表单。 例如, 在搜索框输入关键字之后的“回车” 操作, 就可以通过该方法模拟。
    • size: 返回元素尺寸;text:获取元素文本;get_attribbute(name):获取属性值;is_displayed: 设置元素是否用户可见

    四、鼠标事件 e.g. webdriver_ActionChains  :提供了鼠标操作的常用方法

    from selenium.webdriver.common.action_chains import ActionChains 导入 ActionChains 方法

    • perform() : 执行所有 ActionChains 中存储的行为
    • context_click(): 右击
    • double_click(): 双击
    • drag_and_drop() :拖动
    • move_to_element(): 鼠标悬停

    五、Keys()类提供了键盘上几乎所有按键的方法。 前面了解到, send_keys()方法可以用来模拟键盘输入, 除此 之外, 我们还可以用它来输入键盘上的按键, 甚至是组合键, 如 Ctrl+A、 Ctrl+C 等。e.g. webdriver_Keys

    from selenium.webdriver.common.keys import Keys

    六、最后一步需要拿实际结果与预期进行比较。这个比较的称之为断言。我们通常可以通过获取title 、URL和text等信息进行断言。貌似这个过程就是比较,前后比较 e.g. practice_basic/get assertion information

    七、设置元素等待:显式等待和隐式等待

    显式等待

    使WebdDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)

    WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

    driver:浏览器驱动

    timeout:最长等待的时间,默认以秒为单位

    poll_frequency:检测间隔时间,默认为0.5s

    ignored_exceptions:超时后的异常信息,默认情况下抛 NoSuchElementException异常

    隐式等待

    WebDriver 提供了implicitly_wait() 方法来实现隐式等待,默认设置为0。

    八、多表单切换

    因为表单中的元素,WebDriver 无法直接定位,需要用 switch_to.frame()方法将当前定位的主体切换为 frame/iframe 表单的内嵌页面,就像我们平时要在表单中输入用户名和密码都需要用鼠标点一下 e.g.  practice_basic/switch_to_frame

    九、警告框处理

    switch_to_alert() e.g. practice_basic/switch_to.alert

    十、下拉框选择

    WeDriver 提供了 Select 类来处理下拉框,Select 类用于定位 select 标签。

    select_by_value() 定位下接选项中的 value 值  e.g. practice_basic/select

    十一、文件上传

    对于通过input标签实现的上传功能,可以将其看作是一个输入框,即通过 send_keys() 指定本地文件路径的方式实现文件上传

    十二、 cookie 操作(储存在用户本地终端上的数据,通过)

    重点

    实践:开源中国

    自动化测试 https://www.oschina.net/p/testmp

    学习Robot Framework https://www.cnblogs.com/yufeihlf/p/5949984.html

    学习自动化测试乙醇网站:http://www.testclass.net

    国内用的比较多的:JUnit或者TestNG 是java 用的框架

  • 相关阅读:
    前端有关请求的相关内容axios
    有关浏览器异步请求数据的跨域问题
    Java环境的配置
    Css3中有关的 @media 媒体查询相关的知识
    Vue中实现异步加载的组件进行分割介绍
    Less的相关知识
    Vue框架中有关 computed的相关知识
    vue中如何在子组件添加类似于watch属性监听父组件数据,数据变化时子组件做出相应的动作
    JS的有关递归的知识点(数据无限级联的实现)
    JS中有关闭包的相关内容及介绍
  • 原文地址:https://www.cnblogs.com/yaozhi/p/10270856.html
Copyright © 2020-2023  润新知