转载

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

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

录制

以登录cnblogs为例

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

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

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

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

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

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

  • HTML table格式

    保存测试文件

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

    查看录制文件

        <?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...)

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

    • 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菜单栏上的绿色按钮

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

执行结果

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

结束

正文到此结束
Loading...