Selenium(简单入门)

请直接看原文:
selenium 使用教程详解-java版本 - 小葛师兄 - 博客园 (cnblogs.com)


第一章 Selenium 概述#

1.1.Selenium 发展史#

Selenium是一系列基于Web的自动化工具,提供一套测试函数,用于支持Web自动化测试。函数非常灵活,能够完成界面元素定位、窗口跳转、结果比较。具有如下特点:

  • 多浏览器支持
    • 如IE、Firefox、Safari、Chrome、Android手机浏览器等。
  • 支持多语言
    • 如Java、C#、Python、Ruby、PHP等。
  • 支持多操作系统
    • 如Windows、Linux、IOS、Android等。
  • 开源免费

Selenium框架由多个工具组成,包括:Selenium IDE,Selenium RC,Selenium WebDriver和SeleniumRC。

发展到如今 Selenium 已经发布到了 3.0 版本了,以下是简单总结发展过程以及一些变化:

  • Selenium 1.0

Jason Huggins在2004年发起的 Selenium 项目,使用 JavaScript 编写的一个类库,这个 JavaScript 类库就是Selenium core,同时也是seleniumRC、Selenium IDE的核心组件。Selenium由此诞生。

  • Selenium 2.0

因为Selenium和Webdriver的合并,所以,Selenium 2.0由此诞生。

简单用公式表示为:Selenium 2.0 = Selenium 1.0 + WebDriver

需要强调的是,在Selenium 2.0中主推的是WebDriver,可以将其看作Selenium RC的替代品。因为Selenium为了保持向下的兼容性,所以在Selenium 2.0中并没有彻底地抛弃Selenium RC。

所以,我们在学习Selenium2.0的时候,核心是学习WebDriver。它的工作原理是这样的:

  • Selenium 3.0

    Selenium 3.0做了一些不大不小的更新:

    • 1、终于去掉了RC,简单用公式表示为:Selenium 3.0 = Selenium 2.0 - Selenium RC(Remote Control)

    • 2、Selenium3.0只支持Java8版本以上。

    • 3、Selenium3.0中的Firefox浏览器驱动独立了,以前装完selenium2就可以驱动Firefox浏览器了,现在和Chrome一样,必须下载和设置浏览器驱动。

    • 4、MAC OS 集成Safari的浏览器驱动。默认在/usr/bin/safaridriver 目录下。

    • 5、只支持IE 9.0版本以上。

1.2.Selenium WebDriver原理#

将 WebDriver 驱动浏览器类比成开出租车的场景。

在开出租车时有三个角色:

  • **乘客:**他/她告诉出租车司机去哪里,大概怎么走。

  • **出租车司机:**他按照乘客的要求来操控出租车。

  • **出租车:**出租车按照司机的操控完成真正的行驶,把乘客送到目的地。

在WebDriver中也有类似的三个角色:

  • 工程师写的自动化测试代码:自动化测试代码发送请求给浏览器的驱动(比如火狐驱动、谷歌驱动)
  • 浏览器的驱动:它来解析这些自动化测试的代码,解析后把它们发送给浏览器
  • 浏览器:执行浏览器驱动发来的指令,并最终完成工程师想要的操作。

第二章 Selenium 环境搭建#

2.1.java 环境#

想要通过 java 语言来使用 selenium 框架,前提要完成 jdk 环境的安装。

详细安装教程见:https://blog.csdn.net/shengmer/article/details/78836255

2.2.selenium 环境#

简单 java 工程:

直接导入 selenium的 jar 包就可以了。

jar包下载地址:Selenium各个版本jar下载 , 下载对应的版本即可

maven工程:

在pom文件中引入对应的依赖即可:

maven仓库:https://mvnrepository.com/

java 复制代码
 <dependency>
     <groupId>org.seleniumhq.selenium</groupId>
     <artifactId>selenium-java</artifactId>
     <version>3.4.0</version>
 </dependency>

2.3.selenium3 对应浏览器驱动下载#

当selenium升级到3.0之后,对不同的浏览器驱动进行了规范。如果想使用selenium驱动不同的浏览器,必须单独下载并设置不同的浏览器驱动。
各浏览器下载地址:

设置浏览器驱动

设置浏览器的地址非常简单。 我们可以手动创建一个存放浏览器驱动的目录,如: C:\driver , 将下载的浏览器驱动文件(例如:chromedriver、geckodriver)丢到该目录下。
我的电脑-->属性-->系统设置-->高级-->环境变量-->系统变量-->Path,将"C:\driver"目录添加到Path的值中。

验证浏览器驱动

验证不同的浏览器驱动是否正常使用。

java 复制代码
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.opera.OperaDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriver;


WebDriver driver = new ChromeDriver();    //Chrome浏览器

WebDriver driver = new FirefoxDriver();   //Firefox浏览器

WebDriver driver = new EdgeDriver();      //Edge浏览器

WebDriver driver = new InternetExplorerDriver();  // Internet Explorer浏览器

WebDriver driver = new OperaDriver();     //Opera浏览器

WebDriver driver = new PhantomJSDriver();   //PhantomJS
 

第三章 Selenium 简单示例#

  • 打开百度进行搜索:
java 复制代码
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

/**
 * @Description: 通过selenium操作浏览器打开百度进行搜索
 * selenium版本:3.12.0; 通过maven管理jar包
 * 开发工具:IDEA
 * jdk:1.8
 * 浏览器:chrome 75+
 * @Author: ggf
 * @Date: 2020/03/22
 */
public class BaiduSearch {
    public static void main(String[] args) {
        // 1.创建webdriver驱动
        WebDriver driver = new ChromeDriver();
        // 2.打开百度首页
        driver.get("https://www.baidu.com");
        // 3.获取输入框,输入selenium
        driver.findElement(By.id("kw")).sendKeys("selenium");
        // 4.获取"百度一下"按钮,进行搜索
        driver.findElement(By.id("su")).click();
        // 5.退出浏览器
        driver.quit();
    }
}
相关推荐
武子康2 小时前
大数据-226 离线数仓 - Flume 优化配置 自定义拦截器 拦截原理 了 拦截器实现 Java
java·大数据·数据仓库·hive·hadoop·数据挖掘·flume
晨航4 小时前
Flink新版Source接口源码解析
java·大数据·flink
ccsd115 小时前
jmeter并发测试
java·jmeter
2401_857600957 小时前
电商系统开发:Spring Boot框架实战
java·spring boot·后端
WAXXD7 小时前
Java读取WPS excel.xlsx嵌入图片
java·excel·wps
yava_free7 小时前
详解一下JVM诊断方法和其工具的使用
java·开发语言
南宫生7 小时前
力扣-Hot100-二叉树其二【算法学习day.33】
java·数据结构·学习·算法·leetcode·动态规划
小吕学编程8 小时前
开发中SQL积累
java·数据库·sql
KevinAha8 小时前
Tomcat 8.5 源码导读
java·tomcat
她说人狗殊途8 小时前
设计模式学习
java·学习·设计模式