• java中Selenium简单使用


    前言

    Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。

    环境配置

    下载对应浏览器驱动

    这里使用Chrome浏览器,根据自己当前安装Chrome的版本来选择,下载地址,放到一个指定目录下,如 D:Tempchromedriver.exe.

    引入Selenium的maven依赖

    maven中央仓库

    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>3.141.5</version>
    </dependency>
    

    代码测试

    这里我们使用Selenium完成一个小功能

    打开百度,搜索"selenium 中文官网",新开一个窗口打开第一个搜索的结果。
    

    代码实现如下

    import java.util.List;
    import java.util.concurrent.TimeUnit;
    import org.openqa.selenium.By;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    public class Client {
    
      public static void main(String[] args) throws InterruptedException {
        //配置浏览器驱动地址
        System.setProperty("webdriver.chrome.driver",
            "D:\Temp\chromedriver.exe");
        //打开Chrome浏览器
        WebDriver webDriver = new ChromeDriver();
        TimeUnit.SECONDS.sleep(5);
        //打开百度网站
        webDriver.get("https://www.baidu.com");
        TimeUnit.SECONDS.sleep(2);
        //输入框输入搜索关键词 selenium 中文官网
        webDriver.findElement(By.id("kw")).sendKeys("selenium 中文官网");
        TimeUnit.SECONDS.sleep(2);
        //点击百度一下按钮
        webDriver.findElement(By.id("su")).submit();
        TimeUnit.SECONDS.sleep(2);
        //查询所有搜索的结果
        List<WebElement> resultElements = webDriver.findElements(By.className("result"));
        if (!resultElements.isEmpty()) {
          //找到第一条结果的第一个链接
          List<WebElement> aTagElements = resultElements.get(0).findElements(By.tagName("a"));
          if (!aTagElements.isEmpty()) {
            //新开一个窗口打开此链接
            String href = aTagElements.get(0).getAttribute("href");
            System.out.println(href);
            ((JavascriptExecutor) webDriver).executeScript(String.format("window.open('%s')", href));
          }
        }
        TimeUnit.SECONDS.sleep(10);
        //关闭浏览器
        webDriver.quit();
      }
    
    }
    

    这里需要用到一些HTML中定位元素的知识,如根据Id,class,标签名称定位元素等。执行效果如下

    基本原理

    Selenium 自己定义了一套协议 The WebDriver Wire Protoco,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等,每个浏览器都实现了这套协议,就是WebDriver驱动。java向WebDriver发送http请求,WebDriver调用对应浏览器的本地API,并将返回结果封装成json返回给java。

    参考

    selenium 使用教程详解-java版本
    WebDriver工作原理
    Selenium Webdriver原理终于搞清楚了!
    WebDriver官方文档

  • 相关阅读:
    大屏设计-大数据综合展示可视化平台
    大数据可视化大屏设计经验,教给你!
    数据可视化表格-设计经验分享!
    大数据可视化大屏图表设计经验,教给你
    数据可视化美学形式与功能需要齐头并进
    大屏可视化解决方案
    node-sass 安装失败 win32-x64-57_binding.node
    node版本如何升级
    ES6课程---8、模板字符串
    ES6课程---7、箭头函数
  • 原文地址:https://www.cnblogs.com/strongmore/p/15110802.html
Copyright © 2020-2023  润新知