Selenium WebDriver 快速入门

今天这篇讲的是快速入门 Selenium,通过阅读本文并且跟随操作,读者将能做到以下:

  • 搭建本地 Selenium WebDriver 环境
  • 了解 Selenium WebDriver,Selenium IDE 和 Grid 区别

如果只想知道 WebDriver 环境怎么搭,如何写出一个 Demo,那么可跳过下面的部分,直接看 Selenium WebDriver 环境搭建,但仍建议了解其测试架构,这便于你知道为什么要部署这些应用

Selenium WebDriver 测试架构

1. 直接通信方式
直接通信方式
上图中,WebDriver(WD)表示我们的自动化代码中使用到的 WD API,代理程序是一个驱动程序,用来控制浏览器,这是 WD 能控制浏览器的基础。大多数代理程序是浏览器厂商提供

这种方式执行 WebDriver 的客户端代码示例为:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

WebDriver driver = new ChromeDriver();

2. 间接通信方式

间接通信方式
图中远程 PC 也可以是本地 PC,WebDriver 表示本地客户端代码,Remote WebDriver 是一个 Selenium Server,其可执行程序为 selenium-server-standalone-{VERSION}.jar

这种方式执行 WebDriver 的客户端代码示例为:

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setCapability("browserVersion", "80");
chromeOptions.setCapability("platformName", "Windows 10");
WebDriver driver = new RemoteWebDriver(new URL("http://www.driver-index.com"), chromeOptions);
driver.get("http://www.example.com");
driver.quit();

这里多提一下,该架构方式依赖 selenium server,对于每个 session,需要及时将其关闭(WebDriver#quit 或者 Selenium#stop()),否则会引发内存泄漏

Selenium WebDriver 环境搭建

1. 工具和库依赖

Java Maven

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

Python 依赖

pip install selenium

2. 环境部署

1)代理程序环境变量配置

这里我下载的是 Chrome 的代理,将该代理所在的目录设置到环境变量中

Windows 10

以管理员方式打开命令行 cmd,然后执行命令(将 D:\selenium 改为你的 chromdriver 所在目录)

D:\> setx /m path "%path%;D:\selenium"

Mac OS (将 /Users/mac/selenium 改为你的 chromdriver 所在目录 )

$ export PATH="$PATH:/Users/mac/selenium"

2)启动服务

启动 selenium server

$ java -jar selenium-server-standalone-3.141.59.jar

启动成功则最后两行一般如下

16:35:10.572 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
16:35:10.750 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4444

这里面告诉你服务的端口号是 4444,可以用浏览器访问 http:127.0.0.1:4444/wd/hub
在这里插入图片描述

3. 编写客户端代码

以 Java 为例

public class Demo {
    public static void main(String[] args) throws MalformedURLException {
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.setCapability("browserVersion", "80");
        chromeOptions.setCapability("platformName", "Mac OS X");
        URL server = new URL("http://127.0.0.1:4444/wd/hub");
        WebDriver driver = new RemoteWebDriver(server, chromeOptions);
        driver.get("http://www.google.com");
        driver.quit();
    }
}

执行这段代码则 Selenium 会打开一个 Chrome 的新窗口,并访问 google 主页

错误的操作

1. server URL 写成 "http://127.0.0.1:4444

这样执行代码后会抛出一例异常

在这里插入图片描述
异常 Message 其实就是一个帮助页面的内容,用浏览器打开 http://127.0.0.1:4444 即可看到

在这里插入图片描述
正确访问 WebDriver 需要指定到位置 /wd/hub

2. 没有配置代理程序

代理程序可以通过设置环境变量 path(上文介绍的方法),也可以通过在代码或者命令行中添加

  • 代码中添加(Java)
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
  • 运行时添加
mvn test -Dwebdriver.chrome.driver=/path/to/chromedriver
  • 运行代码前手动启动(不推荐)

如没有配置代理程序,执行代码时会遇到如下异常

在这里插入图片描述

Selenium WebDriver, Selenium IDE, Grid 区别

Selenium WebDriver 是 Selenium 的核心,是控制浏览器,提供客户端 API 的组件,编写自动化代码必不可少的部分

Selenium IDE 是 Selenium 提供的一款编写自动化代码的编辑器,是 Firefox 和 Chrome 的扩展程序,使用 IDE 能录制浏览器操作过程,同时它提供的定位工具能够自动提取 Element 参数

selenium IDE 界面
定位控件
提取控件
Grid 用在编写完自动化代码后,如果你有如下需求时,使用 Grid 比较方便:需要对多台计算机,多个浏览器,或者多个浏览器版本同时进行自动化测试(兼容性测试)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值