爬虫入门selenium

Selenium

Selenium是最广泛使用的开源Web UI(用户界面)自动化测试套件之一。它最初由Jason Huggins于2004年开发,作为Thought Works的内部工具。Selenium支持跨不同浏览器,平台和编程语言的自动化。

  • Selenium可以轻松部署在Windows,Linux,Solaris和Macintosh等平台上。此外,它支持iOS(iOS,Windows Mobile和Android)等移动应用程序的OS(操作系统)。

  • Selenium通过使用特定于每种语言的驱动程序支持各种编程语言.Selenium支持的语言包括C#,Java,Perl,PHP,Python和Ruby。目前,Selenium Web驱动程序最受Java和C#欢迎。Selenium测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代Web浏览器中运行。Selenium支持的浏览器包括Internet Explorer,Mozilla Firefox,Google Chrome和Safari。

Selenium WebDriver

Selenium WebDriver是Selenium RC的继承者。Selenium WebDriver接受命令(在Selenese中发送,或通过客户端API)并将它们发送到浏览器。这是通过特定于浏览器的浏览器驱动程序实现的,该驱动程序将命令发送到浏览器并检索结果。大多数浏览器驱动程序实际上启动并访问浏览器应用程序。

  • Selenium WebDriver是Selenium Tool套件中最重要的组件。最新版本“Selenium 2.0”与WebDriver API集成,提供更简单,更简洁的编程接口。

环境配置

这里选用的是Google Chrome测试套件。

  • 注意,使用jdk8。

  • 下载ChromeDriver

    • 由三个独立的部分组成。有浏览器本身(“chrome”),Selenium项目提供的语言绑定(“驱动程序”)和从Chromium项目下载的可执行文件,它充当“chrome”和“driver”之间的桥梁。此可执行文件称为“chromedriver”,但我们将尝试将其称为此页面中的“服务器”以减少混淆。
    • 根据电脑安装的chrome版本选择合适的版本下载地址

快速安装

  • Mac users with Homebrew installed: brew tap homebrew/cask && brew cask install chromedriver

  • Debian based Linux distros: sudo apt-get install chromium-chromedriver

测试代码

  • Pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<properties>
<junit.version>4.12</junit.version>
<lmbok.version>1.18.4</lmbok.version>
<slf4j.version>1.7.25</slf4j.version>
<logback.version>1.2.3</logback.version>
<!-- pom文件需要指定打包编码集,[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent! -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>


<dependencies>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lmbok.version}</version>
</dependency>

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>

<!-- Jsoup 工具包 -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.14.0</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
</dependencies>
  • 演示代码用例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package cn.z201.selenium.test;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

/**
* @author z201.coding@gmail.com
**/
@Slf4j
public class SeleniumTest {

@Test
public void test(){
// 这里演示的是mac brew安装后就是在/usr/local/bin/chromedriver这个位置
System.setProperty("webdriver.chrome.chromedriver", "/usr/local/bin/chromedriver");
WebDriver driver = new ChromeDriver();
// 访问百度
driver.get("https://www.baidu.com/");
// 获取搜索输入节点
WebElement key = driver.findElement(By.cssSelector("#kw"));
// 搜索栏输入值
key.sendKeys("chromedriver");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 获取表单提交节点
WebElement submit = driver.findElement(By.cssSelector("#su"));
// 点击提交
submit.click();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
driver.quit();
}

}
  • 运行完上面的代码就完成了最简单的demo。