zoukankan      html  css  js  c++  java
  • Selenium超简单入门

    一、它可以做什么

    小时候玩网游时,接触过一款名为“按键精灵”的软件,可以用它先录好一些点击事情,例如让游戏人物在原地转圈,发招打怪等,之后自己就可以不用重复点鼠标,按键精灵能帮我们反复执行动作。selenium的作用,与之类似,他是一款自动化工具,是网页自动化测试、网页数据爬虫的利器。

    二、一个最简单的例子
    1、获取依赖包
    获取selenium-server-standalone-2.25.0.jar并引入到项目中

    获取chrome浏览器内核driver程序 chromedriver.exe,并放到 D:/WebDriver/

    2、例子程序( 配好依赖包,可直接用哦)
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    /**
     * 这段程序演示了:借助 selenium,启动 chrome浏览器,并登录QQ邮箱的过程
     *
     * @author lizeyang
     *
     */
    public class SeleniumUtil
    {
            // 浏览器程序的路径
            private String webBrowserPath = "";
    
            private WebDriver driver = null;
    
            private String loginUrl = "https://mail.qq.com/cgi-bin/loginpage" ;// QQ邮箱的登录页
            private String username = "10000"; // QQ帐号
            private String password = "helloworld"; // QQ密码
    
            // 初始化 selenium要调用的浏览器并启动
            public void init()
           {
                   webBrowserPath = "D:/WebDriver/chromedriver.exe" ;
                  System. setProperty( "webdriver.chrome.driver", webBrowserPath );
                   driver = new ChromeDriver();
           }
    
            // 关闭浏览器
            public void quitDrvier()
           {
                   if ( null != driver)
                  {
                          driver .quit();
                  }
           }
    
            public void waitForSecond()
           {
                   try
                  {
                         Thread. sleep(1000);
                  }
                   catch (InterruptedException e)
                  {
                         e.printStackTrace();
                  }
           }
    
            // 模拟登录过程
            public void login()
           {
                   driver .get(loginUrl ); // 进入QQ登录页
                  WebElement element = driver .findElement(By.id( "uin" ));// 找到id名为 uin的dom 元素
                  element.sendKeys( username );// 当前element为 uin输入框,将用户名填到这个输入框
                  waitForSecond(); // 让进程等待一会,避免偶尔出现的元素获取异常
                  element = driver .findElement(By.id( "p" ));// 找到id名为p的 dom元素
                  element.sendKeys( password );// 将密码填入
                  waitForSecond();
                  element = driver .findElement(By.id( "btlogin" ));// 找到登录按钮
                  waitForSecond();
                  element.click(); // 点击登录按钮
           }
    
            public void demo()
           {
                  init();
                  login();
                   // quitDrvier();
           }
    
            public static void main(String[] args)
           {
                  SeleniumUtil util = new SeleniumUtil();
                  util.demo();
           }
    
    }
    你可以直接将这段代码copy到你新建的工程中并运行,你看到的效果是:程序自动地启动了一个浏览器,来到QQ邮箱登录页,帐号密码被自动填充到相应输入框,登录到邮箱中
    三、页面元素的捕获
    使用selenium过程中,一个重要过程,就是对页面元素进行获取,之后才能对这个页面元素做相应操作。因此,这里对页面元素的捕获做一个补充说明。
    如例子程序中所示,获取页面元素的基本方法是 driver  .findElement().你可以给 findElement()传入多个参数,表示不同的页面元素寻找方法.例如通过查找页面元素的id是通过By.id这个名字。
    更多的方法如下图所示:


    这里特别推荐xpath的方式,Xpath的能力非常强大,基本上所有的元素都能拿到。例如,就算页面元素既没有id号,又没有唯一的class名称,它的父节点是一个div,拥有class名为paginatorBatchSizes,而它自己本身是一个span元素,那么By.xpath("//div[@class='paginatorBatchSizes']/span")就能拿到这个元素。总而言之,Xpath的能力,还有更多的想象空间,但它具体还有哪些能力,这里就不展开了,可以到 http://www.w3school.com.cn/xpath/做进一步了解


  • 相关阅读:
    c#中使用log4net工具记录日志
    由命名空间函数而引发思考--js中的对象赋值问题
    浅析C#中的Attribute[转]
    剑指offer_输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
    剑指offer_输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径
    剑指offer_输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
    HashSet TreeSet 中元素顺序问题(未解决)
    找出某个String中出现次数最多的字符,并输出次数(字符较长)
    MyBatis、JDBC、Hibernate区别
    String.equals用法注意
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3035798.html
Copyright © 2011-2022 走看看