• selenium的使用


    简介:seleniumweb自动化测试的工具,它支持IEfirefoxchrome等多种浏览器,支持javac#pythonruby等多种脚本语言。下面以百度为实例,利用selenium做一些简单的自动化操作,最后模拟一些数据,对数据库进行操作

    一.前提准备                                                                                                                               

       1.selenium-java-2.45.0.jar  

       2.selenium-server-standalone-2.45.0.jar  

       3.mysql-connector-java-5.1.7-bin.jar   java连接mysql的驱动包

    二.实现目标

       1.启动火狐浏览器

       2.打开百度链接

       3.在输入框中输入文字

       4.点击百度按钮

       5.返回前一页,退回后一页

       6.在新闻,网页,知道这些tab中切换

       7.点击文库中的下拉框选择一项

       8.点击搜索结果中的一项,打开了一个新的页面

       9.打开一个新的页面之后,关闭这个页面

       10.将页面上读到的某些数据插入到数据库,这里我直接模拟一些数据插入数据库

    三.代码实现

       1.启动火狐浏览器

       WebDriver driver=new FirefoxDriver();

       2.打开百度

       String url = "http://www.baidu.com";

       driver.get(url);

        //得到title

       String title= driver.getTitle();

       //得到当前页面url

      String currentString=driver.getCurrentUrl();

      //得到当前页面句柄

      String currentWindow=driver.getWindowHandle();

      String preWindowString=currentWindow;//主页

      3.获取输入框的id,id=kw。对于firefox有2种方式获取控件元素:①快捷键F12  ②在火狐的附加组件中安装插件firebug

        WebElement input= driver.findElement(By.id("kw"));

        input.sendKeys("webdriver");

      4.点击百度按钮

      WebElement btn= driver.findElement(By.id("su"));

      btn.click();

      5.返回前一页

        driver.navigate().back();

        退回后一页

        driver.navigate().forward();

      6.切换其他tab栏,如文库,文库是一个链接,所以为linktext

        WebElement link= driver.findElement(By.linkText("文库"));

        link.click();

      7.点击文库中的下拉框选择一项,className=d-arrow不止一个,所以为一个集合,点击你需要的那个下拉框

       List<WebElement> list= driver.findElements(By.className("d-arrow"));   

       ((WebElement) list.get(1)).click();

       WebElement l= driver.findElement(By.linkText("最多下载"));

       l.click();

      8.点击搜索结果中的一项,打开了一个新的页面

      WebElement link= driver.findElement(By.linkText("网页"));

       link.click();

       //在新窗口打开了列表中的一项

       WebElement result= driver.findElement(By.xpath("//div[@id='content_left']/div/h3/a[@target='_blank']"));

       result.click();

      9.打开一个新的页面之后,关闭这个页面

       //得到所有页面句柄

       Set<String> handles=driver.getWindowHandles();

       Iterator<String> it=handles.iterator();

       while(it.hasNext()){

            String cruWindowString=it.next();//当前页

            System.out.println("next"+cruWindowString);

            if(currentWindow==cruWindowString){

                 continue;

            }

           WebDriver window=driver.switchTo().window(cruWindowString);

    }

       Thread.sleep(5000);

       driver.close();

    10.将页面上读到的某些数据插入到数据库,这里我直接模拟一些统计数据插入数据库

       模拟统计数据操作:2mapvalue相加,放入一个新的map中插入数据库,如果数据库存在改数据则不插入

       public class mysql {

           public static void main(String[] args){

            // 驱动程序名         

               String driver = "com.mysql.jdbc.Driver";

            // URL指向要访问的数据库名         

               String url = "xxxx";

            // MySQL配置时的用户名           

               String user = "xxxx";             

           // MySQL配置时的密码           

               String password = "xxxx";

               try {            

                    // 加载驱动程序          

                    Class.forName(driver);

                   // 连续数据库         

                    Connection conn = DriverManager.getConnection(url, user, password);

            

                     if(!conn.isClosed())              

                               System.out.println("Succeeded connecting to the Database!");

                     // statement用来执行SQL语句            

                     Statement statement = conn.createStatement();

            

                    ArrayList<String> list1=new ArrayList<String>();

                    list1.add("11");

                    list1.add("22");

                    list1.add("33");

                    HashMap<String, ArrayList<String>> map1=new HashMap<String,ArrayList<String>>();

                    map1.put("2015-06-04", list1);

                    ArrayList<String> list2=new ArrayList<String>();

                    list2.add("11");

                    list2.add("22");

                    list2.add("33");

                    System.out.println(list2);

                    HashMap<String,ArrayList<String>> map2=new HashMap<String,ArrayList<String>>();

                    map2.put("2015-06-04", list2);

          

                    HashMap<String, ArrayList<Integer>> resultMap = write(map1,map2);

         

        

                    for (String keyString : resultMap.keySet()) {

                             int newUser = 0;

                             int activeUser = 0;

                             int statUser = 0;

                             ArrayList<Integer> list = resultMap.get(keyString);

                             newUser = Integer.valueOf(list.get(0));

                             System.out.println(newUser);

                             activeUser = Integer.valueOf(list.get(1));

                             statUser = Integer.valueOf(list.get(2));

                             SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

                             java.util.Date date=sdf.parse(keyString);

                             Date dd=new Date(date.getTime());

                             System.out.println(dd);

        

       

                             String sql = "select * from rp_ca_appdata_copy where date='"+dd+"'";

           

                             // 结果集          

                            PreparedStatement ps = conn.prepareStatement(sql);

                            ResultSet rs =ps.executeQuery();

         

                            int count=0;

                            while(rs.next()) {            

                                 count++;       

                            }

                            if(count==0){

                                       String sql1 = "insert into  表名(Date,Newusernum,Activeusernum,Startnum,Type,App) values"

                                                            + "('"+dd+"','"+newUser+"','"+activeUser +"','"+statUser+"',0,0)";

                           PreparedStatement ps1 = conn.prepareStatement(sql1,Statement.RETURN_GENERATED_KEYS);

                           ps1.executeUpdate();

                           System.out.println("数据插入成功");

                           }else{

                                   System.out.println(dd+"的数据已存在,无需插入");

                            }

                           rs.close();            

                           conn.close(); 

                    }     

            } catch(ClassNotFoundException e) {

             System.out.println("Sorry,can`t find the Driver!");         

             e.printStackTrace();

            } catch(SQLException e) {

             e.printStackTrace();

            } catch(Exception e) {

             e.printStackTrace();

            }

    }

           public static HashMap<String, ArrayList<Integer>> write(HashMap<String, ArrayList<String>> p_map1,HashMap<String, ArrayList<String>> p_map2) {

               HashMap<String, ArrayList<Integer>> resultMap = new HashMap<String, ArrayList<Integer>>();

               for (String keyString : p_map1.keySet()) {

                   int newUser = 0;

                   int activeUser = 0;

                   int statUser = 0;

                   for (String keyString2 : p_map2.keySet()) {

                       if (keyString.equals(keyString2)) {

                               ArrayList<String> list1 = p_map1.get(keyString);

                               ArrayList<String> list2 = p_map2.get(keyString2);

                               ArrayList<Integer> resultList = new ArrayList<Integer>();

                               newUser = Integer.valueOf(list1.get(0))+ Integer.valueOf(list2.get(0));

                               activeUser = Integer.valueOf(list1.get(1))+ Integer.valueOf(list2.get(1));

                               launchTime = Integer.valueOf(list1.get(2))+ Integer.valueOf(list2.get(2));

                               resultList.add(0, newUser);

                               resultList.add(1, activeUser);

                               resultList.add(2, statUser);

                               resultMap.put(keyString, resultList);

                     }

                 }

              }

                for (String keyString : resultMap.keySet()) {

                        System.out.println("key == " + keyString);

                       System.out.println("value == " + resultMap.get(keyString));

                 }

               return resultMap;

           }

    }

    四.启动 Selenium Server 服务器端

    1)运行cmd,找到selenium-server-standalone-2.45.0.jar的存放的路径,输入java -jar selenium-server-standalone-2.45.0.jar ,启动服务器成功后,再运行上面的代码

    2)最好用记事本写一个启动文件,文件后缀为.bat,启动时直接双击

      @echo off

      cd  jar包存放路径,如D:\\XXXX

      D:

      java -jar selenium-server-standalone-2.45.0.jar

     

     

     

  • 相关阅读:
    sublime text3安装package control插件图文教程
    conda创建新环境
    常用的vscode插件安装
    数组合并组合
    内核软死锁
    Ubuntu分区格式化并挂载新增磁盘方法
    Linux如何列出svn一个文件夹下的所有文件
    C++ UTF-8和GBK相互转化
    Linux shell如何用正则表达式匹配分组数据
    如何对接jsoncpp?
  • 原文地址:https://www.cnblogs.com/wyfly/p/4576677.html
Copyright © 2020-2023  润新知