zoukankan      html  css  js  c++  java
  • ruby/python/java全覆盖的SeleniumWebdriver系列教程(2)————浏览器的简单操作

    上一讲我们介绍了如何部署selenium 2.0的开发环境,这一讲我们将介绍如何使用selenium提供给我们的接口进行浏览器的简单操作。

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

    如何打开一个测试浏览器

    做自动化测试一般情况下我们都需要首先打开测试浏览器,浏览器开启后我们方可”命令”浏览器去打开新页面,点击特定的链接,判断具体的逻辑等等。因此该操作为”万里长征的第一步”,必须给以重视。具体代码如下。需要注意的是如果使用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接口。

    接下来

    这一节讨论了浏览器的简单操作,下一节我们将讨论如何在页面上执行js代码。

  • 相关阅读:
    dede图片横向滚动
    dede各种运用[转]
    PROFIBUS-DP现场总线的结构及应用
    51单片机的中断优先级及中断嵌套
    WPF里面制作圆角文本框
    【转】什么叫51单片机最小系统
    【转】(C#)OPC客户端源码
    路漫漫其修远兮,吾要上下左右前后而求索
    二叉树创建为什么用二级指针
    无向图的邻接表创建
  • 原文地址:https://www.cnblogs.com/nbkhic/p/3124206.html
Copyright © 2011-2022 走看看