美文网首页
二、Senenium IDE使用

二、Senenium IDE使用

作者: 叫我松鼠哥哥 | 来源:发表于2019-11-08 10:25 被阅读0次

    一、Selenium IDE 安装

    1. 安装Chrome浏览器
    2. 应用商店下载 Selenium IDE

    二、Selenium IDE 功能界面与工具栏使用

    1. Selenium IDE 功能界面见图一:


      图一

    三、Selenium IDE 脚本录制(再简单的自动化中可用,但是对于长期、稳定的和复杂的自动化项目来讲,不太适合使用录制的方式)

    1. 录制脚本,步骤如下(以录制百度为例):
      1.1 输入百度连接:https://www.baidu.com
      1.2 点击录制按钮,开始录制
      1.3 点击百度首页“新闻”连接,后续点击国内,再点击国际
      1.4 点击录制按钮,结束录制
      1.5 点击执行用例按钮,进行脚本回放
      1.6 脚本执行成功后,操作步骤处,会变成绿色。同时会出现Runs:成功总数;Failures:失败总数

      图二
    2. 增强脚本(以点击“即时新闻”超链接为例)
      2.1 添加assertText要素到之前到录制脚本中,如图三箭头所示,添加的Command是“assertText”;target是“linkText=即时新闻”;value是“即时新闻”。说明此时的检查点设置是检查页面“即时新闻”字符串。如果有则检查通过,脚本继续执行,如果没有,则检查未通过,脚本停止执行。
      如图三所示执行日志显示,脚本执行和检查点检查都失败了。
      因为“即时新闻”是国际Tab页才会有的,在“新闻”首页找不到这个元素,所以执行失败了


      图三
    3. 断言模式介绍
      3.1 常见的三种模式的断言:assert、verify、waitfor
      断言和验证的根本区别:验证失败后程序会继续执行,但是断言失败后将停止脚本的执行

    assert(断言):失败时测试终止
    verify(验证):失败时,测试继续执行,将错误记入日志显示屏
    waitfor:用于等待某些条件变为真,可用于AJAX应用程序测试
    

    3.2 三种模式常用的具体命令

    assertLocation:判断当前是在正确的页面
    assertTitle:检查当前页面的 title 是否正确
    assertValue:检查 input 的值, checkbox 或 radio,有值为”on”无为”off”
    assertSelecteted:检查 select 的下拉菜单中选中是否正确
    assertSelectedOptions:检查下拉菜单中的选项的是否正确
    assertText:检查指定元素的文本
    assertTextPresent:检查在当前给用户显示的页面上是否有出现指定的文本
    assertTextNotPresent:检查在当前给用户显示的页面上是否没有出现指定的文本
    assertAttribute:检查当前指定元素的属性的值
    assertTable:检查 table 里的某个 cell 中的值
    assertEditable:检查指定的 input 是否可以编辑
    assertNotEditable:检查指定的 input 是否不可以编辑
    assertAlert:检查是否有产生带指定 message 的 alert 对话框
    verifyTitle:检查预期的页面标题
    verifyTextPresent:验证预期的文本是否在页面上的某个位置
    verifyElementPresent:验证预期的UI元素,它的HTML标签的定义,是否在当前网页上
    verifyText:核实预期的文本和相应的HTML标签是否都存在于页面上
    verifyTable:验证表的预期内容
    waitForPageToLoad:暂停执行,直到预期的新的页面加载
    waitForElementPresent:等待检验某元素的存在。为真时,则执行
    

    3.4 异常类型

    AssertionError:assert语句失败
    AttributeError:试图访问一个对象没有的属性
    IOError:输入输出异常,基本是无法打开文件
    ImportError:无法引入模块或者包,基本是路径问题
    IndentationError:语法错误,代码没有正确的对齐
    IndexError:下标索引超出序列边界
    KeyError:试图访问字典里不存在的键
    KeyboadrInterrupt:Ctrl+c被按下
    NameError:使用一个还未赋值对象的变量
    SyntaxError:python代码逻辑语法错误,不能执行
    TypeError:传入的对象类型与要求不符
    UnboundLocalError:试图访问一个还未设置的全局变量,基本上是由于另有一个同名的全局变量,导致你以为在访问
    ValueError:传入一个不被期望的值,即使类型正确
    
    1. stortTitle命令和echo命令
    • storeTitle:将网页的title属性值存储到指定变量中
    • echo:控制台打印输出
      使用示例(以打开百度为例):
      4.1 URL中输入https://www.baidu.com,然后按“enter”键
      4.2 设置 Selenium IDE 为录制状态,录制完成。
      4.3 添加命令“sortTitle”、“echo”
      4.4 执行脚本,查看日志
      图四
    1. 从 Selenium IDE 中导出脚本
      5.1 测试用例右边会有三个小点,点击会出现下图


      图五

      5.2 选择想导出的语言,目前官方支持三种
      Java JUnit,JavaScript Mocha,Python pytest
      5.3 导出示例
      导出文件为python

    # Generated by Selenium IDE
    import pytest
    import time
    import json
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.support import expected_conditions
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.common.keys import Keys
    
    class TestFlightSearchList():
      def setup_method(self, method):
        self.driver = webdriver.Chrome()
        self.vars = {}
    
      def teardown_method(self, method):
        self.driver.quit()
    
      def wait_for_window(self, timeout = 2):
        time.sleep(round(timeout / 1000))
        wh_now = self.driver.window_handles
        wh_then = self.vars["window_handles"]
        if len(wh_now) > len(wh_then):
          return set(wh_now).difference(set(wh_then)).pop()
    
      def test_flightSearchList(self):
        self.driver.get("https://www.baidu.com/")
        self.driver.set_window_size(1440, 857)
        self.driver.find_element(By.ID, "kw").send_keys("baidu")
        self.driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)
        self.vars["window_handles"] = self.driver.window_handles
        self.driver.find_element(By.LINK_TEXT, "百度一下,你就知道").click()
        self.vars["win6702"] = self.wait_for_window(2000)
        self.driver.switch_to.window(self.vars["win6702"])
    

    官方文档:https://www.seleniumhq.org/selenium-ide/docs/en/introduction/getting-started/

    Selenium 3+Python 3 自动化测试项目实战 从菜鸟到高手 田春成 李靖 /著

    相关文章

      网友评论

          本文标题:二、Senenium IDE使用

          本文链接:https://www.haomeiwen.com/subject/gmzrmctx.html