Selenium (3) —— Selenium IDE + Firefox录制登录脚本(101 Tutorial)

Selenium (3) —— Selenium IDE + Firefox录制登录脚本(101 Tutorial)


selenium IDE版本: 2.9.1

firefox版本: 39.0.3

参考来源:

Selenium官方下载

Selenium IDE

Understanding Selenium IDE vs Selenium RC

Selenium IDE Tutorial – Part 1

主要内容

Selenium IDE 是一个为进行Selenium测试的集成开发环境工具。Selenium测试可以用HTML table编写,也可以用其他语言来编写,比如C#,PHP,Perl,Python。IDE可以为我们录制,编辑和调试测试。目前IDE以addon的形式只支持Firefox。

安装

可以到以下地址安装

http://selenium-ide.openqa.org/download.jsp

https://addons.mozilla.org/en-US/firefox/addon/2079

安装完毕后需要重启firefox,注意当前最新的IDE 2.9.1与Firefox 40+不太兼容,建议使用40以下的版本,我这里使用的是39.0.3

613455-20160111104107538-1101391493.png

录制

以登录cnblogs为例

IDE启动时,默认状态下是正在录制的

613455-20160111104047866-1547538993.png

如果没有处于录制状态,需要点击右上角的红色按钮

  • 我们在浏览器上一次进行以下操作

    1. 输入URL地址http://passport.cnblogs.com/user/signin,并访问
    2. 输入用户名、密码
    3. 点击登录

    613455-20160111104025069-154185858.png

  • HTML table格式

    保存测试文件

    613455-20160111104135663-1917686045.png

    查看录制文件

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
          <head profile="http://selenium-ide.openqa.org/profiles/test-case">
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
          <link rel="selenium.base" href="http://passport.cnblogs.com/" />
          <title>cnblogs</title>
          </head>
          <body>
          <table cellpadding="1" cellspacing="1" border="1">
          <thead>
          <tr><td rowspan="1" colspan="3">cnblogs</td></tr>
          </thead><tbody>
          <tr>
              <td>open</td>
              <td>/user/signin?AspxAutoDetectCookieSupport=1</td>
              <td></td>
          </tr>
          <tr>
              <td>type</td>
              <td>id=input1</td>
              <td>weizhe_2008</td>
          </tr>
          <tr>
              <td>type</td>
              <td>id=input2</td>
              <td>********</td>
          </tr>
          <tr>
              <td>clickAndWait</td>
              <td>id=signin</td>
              <td></td>
          </tr>
    
          </tbody></table>
          </body>
          </html>
  • 导出其他格式(Java,Ruby)

    同样在文件菜单下,我们可以选择导出java或其他语言(File-> Export Test Case As...)

    613455-20160111105058850-1652354424.png

    • Java(Java / TestNG / WebDriver)

        package com.example.tests;
      
        import java.util.regex.Pattern;
        import java.util.concurrent.TimeUnit;
        import org.testng.annotations.*;
        import static org.testng.Assert.*;
        import org.openqa.selenium.*;
        import org.openqa.selenium.firefox.FirefoxDriver;
        import org.openqa.selenium.support.ui.Select;
      
        public class Cnblogs {
          private WebDriver driver;
          private String baseUrl;
          private boolean acceptNextAlert = true;
          private StringBuffer verificationErrors = new StringBuffer();
      
          @BeforeClass(alwaysRun = true)
          public void setUp() throws Exception {
            driver = new FirefoxDriver();
            baseUrl = "http://passport.cnblogs.com/";
            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
          }
      
          @Test
          public void testCnblogs() throws Exception {
            driver.get(baseUrl + "/user/signin?AspxAutoDetectCookieSupport=1");
            driver.findElement(By.id("input1")).clear();
            driver.findElement(By.id("input1")).sendKeys("weizhe_2008");
            driver.findElement(By.id("input2")).clear();
            driver.findElement(By.id("input2")).sendKeys("********");
            driver.findElement(By.id("signin")).click();
          }
      
          @AfterClass(alwaysRun = true)
          public void tearDown() throws Exception {
            driver.quit();
            String verificationErrorString = verificationErrors.toString();
            if (!"".equals(verificationErrorString)) {
              fail(verificationErrorString);
            }
          }
      
          private boolean isElementPresent(By by) {
            try {
              driver.findElement(by);
              return true;
            } catch (NoSuchElementException e) {
              return false;
            }
          }
      
          private boolean isAlertPresent() {
            try {
              driver.switchTo().alert();
              return true;
            } catch (NoAlertPresentException e) {
              return false;
            }
          }
      
          private String closeAlertAndGetItsText() {
            try {
              Alert alert = driver.switchTo().alert();
              String alertText = alert.getText();
              if (acceptNextAlert) {
                alert.accept();
              } else {
                alert.dismiss();
              }
              return alertText;
            } finally {
              acceptNextAlert = true;
            }
          }
        }
    • Ruby(Ruby / RSpec / WebDriver)

            require "json"
            require "selenium-webdriver"
            require "rspec"
            include RSpec::Expectations
      
            describe "Cnblogs" do
      
              before(:each) do
                @driver = Selenium::WebDriver.for :firefox
                @base_url = "http://passport.cnblogs.com/"
                @accept_next_alert = true
                @driver.manage.timeouts.implicit_wait = 30
                @verification_errors = []
              end
      
              after(:each) do
                @driver.quit
                @verification_errors.should == []
              end
      
              it "test_cnblogs" do
                @driver.get(@base_url + "/user/signin?AspxAutoDetectCookieSupport=1")
                @driver.find_element(:id, "input1").clear
                @driver.find_element(:id, "input1").send_keys "weizhe_2008"
                @driver.find_element(:id, "input2").clear
                @driver.find_element(:id, "input2").send_keys "********"
                @driver.find_element(:id, "signin").click
              end
      
              def element_present?(how, what)
                ${receiver}.find_element(how, what)
                true
              rescue Selenium::WebDriver::Error::NoSuchElementError
                false
              end
      
              def alert_present?()
                ${receiver}.switch_to.alert
                true
              rescue Selenium::WebDriver::Error::NoAlertPresentError
                false
              end
      
              def verify(&blk)
                yield
              rescue ExpectationNotMetError => ex
                @verification_errors << ex
              end
      
              def close_alert_and_get_its_text(how, what)
                alert = ${receiver}.switch_to().alert()
                alert_text = alert.text
                if (@accept_next_alert) then
                  alert.accept()
                else
                  alert.dismiss()
                end
                alert_text
              ensure
                @accept_next_alert = true
              end
            end

回放

点击Selenium IDE菜单栏上的绿色按钮

613455-20160111110146038-181875292.png

执行结果

613455-20160111110025772-559590689.gif

结束

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值