`
z1han
  • 浏览: 32671 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类

ruby/python/java全覆盖的Selenium-Webdriver系列教程(2)————浏览器的简单操作

 
阅读更多


本文将先介绍适合初级用户的一些常用方法,然后将对一些高级用法和实现源码进行稍微深入一些的分析。

如何打开一个测试浏览器
做自动化测试一般情况下我们都需要首先打开测试浏览器,浏览器开启后我们方可”命令”浏览器去打开新页面,点击特定的链接,判断具体的逻辑等等。因此该操作为”万里长征的第一步”,必须给以重视。具体代码如下。需要注意的是如果使用chrome进行测试,那么必须下载安装chrome driver,如果是ie的话,目前必须下载ie driver,另外还需要注意ie的保护模式设置。具体细节参考这里。

?require 'rubygems'  # for ruby 187 only
require 'selenium-webdriver' 
# 打开firefox  
dr = Selenium::WebDriver.for :firefox 
#dr = Selenium::WebDriver.for :ff  
dr.quit
# 打开ie  
dr = Selenium::WebDriver.for :ie 
dr.quit
#dr = Selenium::WebDriver.for :internet_explorer  
# 打开chrome  
dr = Selenium::WebDriver.for :chrome 
dr.quit

--------------------------------------------------------------------------------

?from selenium import webdriver
 
driver = webdriver.Firefox()
driver.quit()
 
driver = webdriver.Chrome()
driver.quit()
 
driver = webdriver.Ie()
driver.quit()

--------------------------------------------------------------------------------

?// 文件OpenBrowser.java
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
public class OpenBrowser {
 
    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();
        driver.quit();
 
        # 设置firefox的安装路径
        System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe");
        WebDriver driver2 = new FirefoxDriver();
        driver2.quit();
 
        WebDriver driver3 = new InternetExplorerDriver();
        driver3.quit();
    }
}
如何访问1个具体的url
打开浏览器后我们需要转到我们的测试站点,也就是要访问1个url。下面的代码可以达成这个目的。

?require 'rubygems'  # for ruby 187 only
require 'selenium-webdriver' 
dr = Selenium::WebDriver.for :chrome
# 使用get方法  
dr.get 'http://www.baidu.com' 
dr.quit()

--------------------------------------------------------------------------------

?from time import sleep
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.quit()

--------------------------------------------------------------------------------

?import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class OpenBrowser {
 
    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();
        driver.get("http://www.baidu.com");
        driver.quit();
    }
}
如何关闭浏览器
测试结束后往往需要关闭浏览器,可以使用driver.quit()或者是driver.close()方法。

这两个方法的异同点是:

•quit可以关闭driver打开的所有浏览器窗口,而close只是关闭当前窗口;
•quit可以关闭与driver的连接,而close依然保留连接。如果你不能理解这个的话,你可以这样简单的认为quit的话会关闭掉driver,而close的不会。因此你使用close关闭了浏览器后,在某些情况下你可以看到仍然存在chromedriver或者iedriverserver进程。
如何返回当前页面的url
这个功能的典型应用场景是:点击一个链接,这时候浏览器跳转到新的页面。测试人员需要判断新页面的url以检查这个链接的跳转是否正确。

下面的代码演示了在百度首页点击"百科"这个链接,跳转到百度百科页面后判断该页面的url是否正确

?# encoding: utf-8
require 'rubygems'  # for ruby 187 only
require 'selenium-webdriver' 
dr = Selenium::WebDriver.for :chrome 
url = 'http://www.baidu.com' 
dr.get url  
 
dr.find_element(link_text: '百科').click
puts 'correct' if dr.current_url == 'http://baike.baidu.com/'

--------------------------------------------------------------------------------

?# -*- coding: utf-8 -*- 
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.find_element_by_link_text('百科').click()
if driver.current_url == 'http://baike.baidu.com/': print 'correct'
driver.quit()

--------------------------------------------------------------------------------

?import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class OpenBrowser {
 
    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();
        driver.get("http://www.baidu.com");
        driver.findElement(By.linkText("百科")).click();
        System.out.println(driver.getCurrentUrl());
        if(driver.getCurrentUrl().equals("http://baike.baidu.com/")){
            System.out.println("correct");
        }
        driver.quit();
    }   
}
如何返回当前页面的title
这个功能的应用场景跟返回页面url的情形差不多。

?require 'rubygems' 
require 'selenium-webdriver' 
dr = Selenium::WebDriver.for :chrome
url = 'http://www.qq.com' 
dr.get url  
puts dr.title  
dr.quit

--------------------------------------------------------------------------------

?from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.qq.com')
print driver.title
driver.quit()

--------------------------------------------------------------------------------

?import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class OpenBrowser {
    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();
        driver.get("http://www.baidu.com");
        driver.findElement(By.linkText("百科")).click();
        System.out.println(driver.getTitle());
        driver.quit();
    }   
}
其他方法或属性
在这里仅仅讨论一些简单的属性和方法,更加复杂的方法会在后面慢慢讨论。

ruby

•window_handles : 返回当前所有打开浏览器的窗口句柄
•window_handle : 返回当前的浏览器的窗口句柄
•page_source : 返回当前页面的源码
•visible? : 当前浏览器是否可见,并不保证支持所有浏览器
python

•window_handles : 返回当前所有打开浏览器的窗口句柄.注意,这是属性,不是方法;
•current_window_handle : 返回当前的浏览器的窗口句柄.注意,这是属性,不是方法;
•page_source : 返回当前页面的源码.注意,这是属性,不是方法;
•name : 返回当前浏览器的名称.注意,这是属性,不是方法;
java

•getWindowHandles() : 返回当前所有打开浏览器的窗口句柄
•getWindowHandle() : 返回当前的浏览器的窗口句柄
•getPageSource() : 返回当前页面的源码
深入讨论
ruby 源码中,操作浏览器的方法主要封装在lib\selenium\webdriver\common\driver.rb文件中。 该文件定义了Selenium::WebDriver::Driver类。我们启动浏览器就是调用这个类的for方法。

python源码中,操作浏览器的方法主要封装在selenium\webdriver\remote\webdriver.py文件中。 该文件定义了Remote WebDriver类。该类是其他具体的driver,如Chrome WebDriver的父类,实现了大多数的公用方法。

java源码中,操作浏览器的方法主要封装在org\openqa\selenium\remote\RemoteWebDriver.java文件中。 该文件定义了RemoteWebDriver类。该类是其他具体的driver,如Chrome WebDriver的父类,实现了WebDriver和JavascriptExecutor接口。


 

0
1
分享到:
评论

相关推荐

    selenium-webdriver从入门到提高

    该书是selenium-webdriver实用指南,页面排版美观,代码简洁

    selenium-java-2.53.1.rar

    selenium自动化测试必须要用的包 官网上下载最新的 会报错。。我用的这个 好了。Selenium 2.0主要的特性就是与WebDriver API的集成...Selenium Webdriver 支持很多语言,如:C#,Java,Python,Ruby 等,本文使用java。

    php-webdriver:SeleniumWebDriver协议PHP客户端。 以前facebookphp-webdriver

    该库的概念与的“正式” Java,.NET,Python和Ruby绑定非常相似。 安装 可以使用安装。 如果您尚未使用Composer,则可以下载composer.phar二进制文件: curl -sS https://getcomposer.org/installer | php 然后...

    selenium_webdriver

    安装selenium webdriver(eclipse+jdk+selenium webdriver2.20+firefox 10) 1、安装firefox,本人使用firefox10。确保firefox 安装在默认环境下(不是 的话会报错)。 2、安装jdk,确保安装了jdk,本人喜欢使用java...

    selenium webdriver学习.zip

    WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成支持创建更高级的...WebDriver API可以通过Python、Ruby、Java和C#访问,支持开发人员使用他们偏爱的编程语言来创建测试。

    Selenium Design Patterns and Best Practices(PACKT,2014)

    Control Selenium WebDriver within any major programing language such as Java, Ruby, Python, and .NET Learn how to implement a simple test script or a complex Page Objects framework Set up each test to...

    python_behave_template:Selenium Webdriver,python,表现

    该存储库是有关的所有教程的一部分我们所有关于Ruby,Java,Python的教程都致力于最大程度地减少特定于语言的怪癖 用法 如果您不知道如何使用git,请单击右上角的“下载zip”选项 对于Git用户,git clone 安装...

    selenium2初学者快速入门(Java).docx

    它是一个开源的、轻量级的自动化工具, 很容易集成到各种项目中,支持多种编程语言,比如 .NET、Perl、Python、Ruby、C# 和 Java 编程语言。 本文从初学者的角度对自动化测试工具 Selenium 2(即 WebDriver)进行...

    selenium2初学者快速入门(Java)

    它是一个开源的、轻量级的自动化工具, 很容易集成到各种项目中,支持多种编程语言,比如 .NET、Perl、Python、Ruby、C# 和 Java 编程语言。 本文从初学者的角度对自动化测试工具 Selenium 2(即 WebDriver)进行...

    Selenium.Testing.Tools.Cookbook.2nd.Edition.178439251

    Over 90 recipes to help you build and run automated tests for your web applications with Selenium WebDriver About This Book Learn to leverage the power of Selenium WebDriver with simple examples that...

    Selenium Testing Tools Cookbook 最新 原版

    This books also provides examples for C#, Python and Ruby users. What You Will Learn Understand how the locators work and use various locator methods to build reliable tests Build reliable and ...

    Selenium Design Patterns and Best Practices 最新 原版

    Control Selenium WebDriver within any major programing language such as Java, Ruby, Python, and .NET Learn how to implement a simple test script or a complex Page Objects framework Set up each test...

    Selenium框架简介

    本文来自于csdn,介绍了SeleniumIDE,SeleniumRC,SeleniumWebDriver,SeleniumGrid,辅助工具等。Selenium是一系列基于Web的自动化工具,提供一套测试函数,用于支持Web自动化测试。函数非常灵活,能够完成界面元素...

    selenium2.0使用

    Selenium Webdriver 支持很多语言,如:C#,Java,Python,Ruby 等,本文使用java。

    diy-json-serializer-lab-v-000

    DIY JSON序列化器实验室 目标 编写JSON序列化器 使用该JSON序列化器呈现信息而无需重新加载页面 介绍 我们将使用我们的产品/... 注意:该测试套件利用selenium-webdriver测试启用AJAX的页面。 您需要安装Firefox才能

    有图形界面的appium-desktop(appium server + appium inspector),版本1.20.2

    Appium继承了Selenium(Web端自动化测试工具),应用WebDriver(JSON wire protocol)技术,借助操作系统自带的测试框架来驱动Android和IOS应用。理念:旨在满足移动端自动化测试需求;架构:C/S (C客户端:测试脚本,S...

    python编程使用selenium模拟登陆淘宝实例代码

    * 这也是最重要的一点,不管你以前更熟悉C、 java、ruby、python、或都是C# ,你都可以通过selenium完成自动化测试,而QTP只支持VBS * 支持多平台:windows、linux、MAC ,支持多浏览器:ie、ff、safari、opera、...

    matlab集成c代码-resume:卡洛斯·巴拉萨(CarlosBaraza)的简历

    Matlab集成的c代码卡洛斯·巴拉萨...测试自动化:摩卡,柴,茉莉花,业力,Webdriver / Selenium,Cucumber,RSpec。 任务自动化: Gulp,Grunt,Webpack,Rake,Bash / Node / Ruby / Python脚本。 基础设施/设备: G

    TestWise Recorder-crx插件

    将网页上的用户操作记录到Ruby,Python,JavaScript,Java,C#和Watir的Selenium WebDriver脚本中 将网页上的用户操作记录到Ruby,Python,JavaScript,Java,C#和Watir的Selenium WebDriver脚本中。

Global site tag (gtag.js) - Google Analytics