selenium + ChromeDriver
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。而对于爬虫来说,使用Selenium操控浏览器来爬取网上的数据那么肯定是爬虫中的杀手武器。这里,我将介绍selenium + 谷歌浏览器的一般使用。首先会介绍如何安装部署环境,然后贴出一些本人所使用的一些方法,最后给出github地址,供大家下载。
1. selenium 环境配置
第二种是使用maven

2. 下载github代码并且进行测试
- 首先在github上下载代码,地址为:https://github.com/lunaMoon1010/SeleniumDemo

- 导入项目

- 运行代码进行测试
/**
* 用来测试第一个代码,访问百度
*/
@Test
public void testHelloWorld() throws Exception {
//开启个浏览器并且输入链接
WebDriver driver = PageUtils.getChromeDriver("https://www.baidu.com/");
//得到浏览器的标题
System.out.println(driver.getTitle());
Thread.sleep(5000);
//关闭浏览器 下面是关闭所有标签页,还有一个代码是 driver.close();, 关闭当前标签页
driver.quit();
}
/**
* 测试向input标签输入值
*/
@Test
public void testInputStrByJS(){
//开启个浏览器并且输入链接
WebDriver driver = PageUtils.getChromeDriver("https://www.baidu.com/");
//向input输入值
PageUtils.inputStrByJS(driver, "kw", "月之暗面 博客园");
}
/**
* 测试点击
*/
@Test
public void testScrollToElementAndClick() throws Exception {
//1、开启个浏览器并且输入链接
WebDriver driver = PageUtils.getChromeDriver("https://www.baidu.com/"); //2、向百度输入框输入需要查询的值
PageUtils.inputStrByJS(driver, "kw", "月之暗面 博客园"); //3、得到百度一下的标签
WebElement submitElement = driver.findElement(By.cssSelector("input#su")); //4、点击百度一下
PageUtils.scrollToElementAndClick(submitElement, driver); //休息3秒,加载数据
Thread.sleep(3000); //5、首先找到 id 为 content_left 的 div 下面的所有 div
List<WebElement> divElements = driver.findElements(By.cssSelector("div#content_left div"));
//6、找到搜索的第一个链接
WebElement aElement = divElements.get(0).findElement(By.cssSelector("div.f13 a[href]")); //7、点击该链接
PageUtils.scrollToElementAndClick(aElement, driver);
}
/**
* 测试切换到另一个标签页
*/
@Test
public void testGetAnotherPage() throws Exception {
//1、开启个浏览器并且输入链接
WebDriver driver = PageUtils.getChromeDriver("https://www.baidu.com/"); //2、向百度输入框输入需要查询的值
PageUtils.inputStrByJS(driver, "kw", "月之暗面 博客园"); //3、得到百度一下的标签
WebElement submitElement = driver.findElement(By.cssSelector("input#su")); //4、点击百度一下
PageUtils.scrollToElementAndClick(submitElement, driver); //休息3秒,加载数据
Thread.sleep(3000); //5、首先找到 id 为 content_left 的 div 下面的所有 div
List<WebElement> divElements = driver.findElements(By.cssSelector("div#content_left div"));
//6、找到搜索的第一个链接
WebElement aElement = divElements.get(0).findElement(By.cssSelector("div.f13 a[href]")); //7、点击该链接
PageUtils.scrollToElementAndClick(aElement, driver); //8、当前页面时百度的页面
//将浏览器对象强制转为可以执行js的对象
System.out.println("现在的页面是:"+driver.getTitle());
//9、切换到博客园页面
PageUtils.getAnotherPage(driver);
//将浏览器对象强制转为可以执行js的对象
System.out.println("现在的页面是:"+driver.getTitle());
}
3.总结
selenium + ChromeDriver的更多相关文章
- 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图
先上结果: 之前 在公司业务中用过java+Selenium+ChromeDriver ,使用起来非常顺手,可以完美模拟真实的用户浏览行为.最近休息的时候想用C#也试一下,于是有了本文. 实现原理一样 ...
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...
- selenium + ChromeDriver 实战系列之启信宝(一)
之前写了一篇selenium + ChromeDriver的一些入门的知识,这篇博客里面找了启信宝这个网站,简单的进行了一个实战练习.本篇博客的结构如下: 首先会给出一些使用seleniu ...
- 一次失败的Selenium chromedriver切换
背景 Selenium webdriver一直使用Firefox作为浏览器来跑webtest, 但是最近发现ff有时会报超时的错误,于是想到使用chromedriver来提升稳定性.本想只把.fire ...
- 使用Selenium+ChromeDriver登录微博并且获取cookie
using OpenQA.Selenium;using OpenQA.Selenium.Chrome; public class GetSinaCookie { private static stri ...
- 无界面Ubuntu服务器搭建selenium+chromedriver+VNC运行环境
搭建背景 有时候我们需要把基于selenium的爬虫放到服务器上跑的时候,就需要这样一套运行环境,其中VNC是虚拟的显示模式,用于排查定位线上问题以及实时运行情况. 搭建流程 安装虚拟输出设备:sud ...
- centos7无GUI运行selenium chromedriver 亲测可用!
1. 安装chrome 首先安装google的epel源 vi /etc/yum.repos.d/google.repo [google] name=Google-x86_64 baseurl=htt ...
- scrapy+selenium+chromedriver解析动态渲染页面
背景:动态页面是页面是通过js代码渲染出来的,无法直接使用scrapy爬虫,这是就需要先把js代码转为静态的html,再用scrapy爬虫就可以解决 解决办法:增加SeleniumMiddleware ...
- selenium:chromedriver与chrome版本的对应关系
转自:http://blog.csdn.NET/huilan_same/article/details/51896672 再使用selenium打开chrome浏览器的时候,需要用chromedriv ...
- c#使用selenium+Chromedriver参数配置
using System; //添加selenium的引用 using OpenQA.Selenium.PhantomJS; using OpenQA.Selenium.Chrome; using O ...
随机推荐
- 持续集成篇 --Hudson持续集成服务器的安装配置与使用
样例项目参考视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 IP:192.168.4.221 8G内存 ...
- 开源搜索引擎abelkhan
发起一个开源项目http://www.abelkhan.com/ 目前而言,已经用python编写了一个网络爬虫抓取页面,和一个简单的前端 网络爬虫,已经有很多高手写过,我基本上奉行了拿来主义, 得益 ...
- Vue和Bootstrap的整合之路
我是一个刚刚接触前端开发的新手,所以有必要记录如何将Bootstrap和Vue进行整合. 如果你是老手,请直接绕道而过.作为一个新手,里面的步骤,过程或者专业术语未必正确,如果你发现哪里错误了,请发邮 ...
- Ionic 常用组件解析
Ionic 常用组件解析 $ionicModal(弹出窗口): //创建一个窗口 //此处注意目录的起始位置为app $ionicModal.fromTemplateUrl('app/security ...
- 我的第一篇博文:C++最初的路-经典的小游戏走迷宫
写在开始:这个博客建于大二下学期.2年多的学习,从网上借鉴的大牛经验,代码,指导数不胜数,而其中大部分来自别人的博客,于是期待有一天也能把自己在学习过程中的一些经验拿出来与大家分享. 其实我凝望了C+ ...
- Java 中基本类型和字符串之间的转换
Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...
- js模块化/js模块加载器/js模块打包器
之前对这几个概念一直记得很模糊,也无法用自己的语言表达出来,今天看了大神的文章,尝试根据自己的理解总结一下,算是一篇读后感. 大神的文章:http://www.css88.com/archives/7 ...
- ABP入门系列(20)——使用后台作业和工作者
ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1.引言 说到后台作业,你可能条件反射的想到BackgroundWorker,但后台作业并非是后台 ...
- 包装类、数组、string类浅析及练习
String s1 = "abc"; String s2 = "abc"; System.out.println(s1==s2); //返回true Strin ...
- CJOJ 1943 【重庆八中模拟赛】寻找代表元(二分图最大匹配)
CJOJ 1943 [重庆八中模拟赛]寻找代表元(二分图最大匹配) Description 八中一共有n个社团,分别用1到n编号. 八中一共有m个人,分别用1到m编号.每个人可以参加一个或多个社团,也 ...
