zoukankan      html  css  js  c++  java
  • 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

    录制

    以登录cnblogs为例

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

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

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

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

    • HTML table格式

      保存测试文件

      查看录制文件

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

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

    执行结果

    结束

  • 相关阅读:
    路由的配置,侧边栏类名与url的结合运用
    bootstrap面包屑在ie8下显示重叠,鼠标点击显示效果正常
    JS代码判断IE6,IE7,IE8,IE9!
    wampserver配置服务
    HTML5 20180918----20180921
    HTML5 20180921
    HTML5 20180920
    HTML5 20180919
    HTML5 20180918
    HTTP协议
  • 原文地址:https://www.cnblogs.com/richaaaard/p/5120423.html
Copyright © 2011-2022 走看看