Java使用Selenium几个例子
零、姿势
Selenium分为两个版本:Selenium RC和Selenium Webdriver。现在用Selenium Webdriver比较多。
Selenium是一套工具,而不仅仅是一个操纵浏览器的库,它包括Selenium IDE,Selenium Grid等。
Selenium对Firefox浏览器支持得最好,对Chrome支持并不完善。Chrome的设计原则就是安全,让用户安全,由此带来的误伤比较多,对开发人员就不太友好,比如Chrome会自动检测跨域访问并禁止之,Firefox就不会。Firefox的设计原则就是开放,对开发人员十分友好。
SeleniumIDE是Firefox的一款插件,这个插件可以录制用户操作,保存下来的是一个指令序列,这个指令序列可以转换成Java、Python、C#等语言的测试代码。当不知道某个操作怎么写时,可以先用SeleniumIDE操作一下并导出代码,略微改改就能直接用了。
一、进行百度搜索并点击链接
//WebDriver是一个接口,每一种浏览器都有一个实现类(多态)
WebDriver webDriver = new FirefoxDriver();
webDriver.manage().window().maximize();
//与浏览器同步非常重要,必须等待浏览器加载完毕
webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//下面这句等价于webDriver.navigate().to("www.baidu.com");
webDriver.get("http://www.baidu.com");
//在输入框中填写要搜索的内容
WebElement kw = webDriver.findElement(By.id("kw"));
kw.sendKeys("java用selenium库控制chrome");
//点击搜索按钮
WebElement su = webDriver.findElement(By.id("su"));
su.click();
webDriver.findElements(By.className("result")).forEach(x -> {
System.out.println(x.getText());
});
//寻找包含weiyinfu的搜索条目
webDriver.findElement(By.partialLinkText("weiyinfu")).click();
//webDriver.close();
System.out.println("Hello World!");
二、新标签页打开链接
两种方式,一个原理。原理就是模拟快捷键。
/**
* 原理就是模拟浏览器的快捷键CTRL+T,
* 由此可知,通过快捷键的方式可以实现的功能,
* 例如:前进、后退、书签、收藏等操作都可以实现
*/
public class 新标签页打开链接 {
static void method1(WebDriver webDriver) {
Actions actionOpenLinkInNewTab = new Actions(webDriver);
actionOpenLinkInNewTab.keyDown(Keys.CONTROL).sendKeys("t").keyUp(Keys.CONTROL).perform();
webDriver.get("http://www.baidu.com");
actionOpenLinkInNewTab.perform();
webDriver.switchTo().window(webDriver.getWindowHandles().toArray()[1].toString());
webDriver.get("http://www.baidu.com");
}
static void method2(WebDriver webDriver) {
webDriver.get("http://www.baidu.com");
webDriver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
webDriver.switchTo().window(webDriver.getWindowHandles().toArray()[1].toString());
webDriver.get("http://www.baidu.com");
}
public static void main(String[] args) {
//设置好浏览器驱动器的位置
System.setProperty("webdriver.gecko.driver",
"C:\\Users\\weidiao\\Desktop\\geckodriver-v0.16.1-win64\\geckodriver.exe");
WebDriver webDriver = new FirefoxDriver();
method1(webDriver);
// method2(webDriver);
}
}
三、模拟登陆博客园并发表评论
WebDriver webDriver = new FirefoxDriver();
//设置默认等待时间,如果没有发现要找的元素就会默认等待30秒钟
webDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
webDriver.get("http://www.cnblogs.com/weidiao");
webDriver.findElement(By.id("homepage1_HomePageDays_DaysList_ctl01_DayList_TitleUrl_0")).click();
webDriver.findElement(By.linkText("登录")).click();
webDriver.findElement(By.id("input1")).clear();
webDriver.findElement(By.id("input1")).sendKeys("weiyinfu");
webDriver.findElement(By.id("input2")).clear();
webDriver.findElement(By.id("input2")).sendKeys("xxxxxxx");
webDriver.findElement(By.id("remember_me")).click();
webDriver.findElement(By.id("signin")).click();
webDriver.findElement(By.id("tbCommentBody")).sendKeys("现在时间" + new Date());
webDriver.findElement(By.id("btn_comment_submit")).click();
四、资源
selenium可以驱动好多种浏览器
http://www.seleniumhq.org/download/
chromedriver下载地址
https://chromedriver.storage.googleapis.com/index.html?path=2.9/
易百教程
http://www.yiibai.com/selenium/selenium_ide.html#article-start
webdriver中文社区
http://www.webdriver.org/article-26-1.html
一个比较完整的selenium测试教程
http://www.51testing.com/zhuanti/selenium.html
selenium入门
http://www.cnblogs.com/weidiao/p/5930468.html
selenium进阶
http://www.cnblogs.com/weidiao/p/5930739.html
HTMLUnit:无头浏览器
http://www.cnblogs.com/weidiao/p/5931339.html
Java使用Selenium几个例子的更多相关文章
- java爬取网页内容 简单例子(2)——附jsoup的select用法详解
[背景] 在上一篇博文java爬取网页内容 简单例子(1)——使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则表 ...
- Windows下RabbitMQ 的下载、配置、Java实现生产者和消费者例子
RabbitMQ是一个轻量级的消息代理中间件,支持多种消息通信协议,支持分布式部署,支持运行于多个操作系统,具有灵活.高可用等特性.RabbitMQ支持多种协议,其中最为重要的是高级消息队列协议(AM ...
- java+eclipse+selenium环境搭建
这几天在学selenium,大头虾的我.安装环境还是遇到了挺多问题,赶紧来记录下.不然下次又...(参考虫师的<Selenium2 Java自动化测试实战>),就随便写写加深下自己的印象. ...
- Selenium 简单的例子
Selenium是一个web自动化验收测试框架. Selenium Client Driver - Selenium 2.0 Document http://seleniumhq.github.i ...
- java用selenium库控制chrome
一.简介 selenium是浏览器自动化工具,可以通过程序来控制浏览器行为,这就是selenium!你可以用它做任何你想做的事情.很多时候人们用它测试web应用,但selenium的用途绝不仅限于此. ...
- Java日期格式化及其使用例子收集
1 SimpleDateFormat担当重任,怎样格式化都行 import java.util.Date; import java.text.SimpleDateFormat; public clas ...
- java socket编程开发简单例子 与 nio非阻塞通道
基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...
- 用Java开发gRPC服务的例子分析
本文的代码例子来自:https://github.com/grpc/grpc-java 定义服务 这一步与其他语言完全一样,需要定义gRPC的服务.方法.request和response的类型. 完 ...
- 如何设计Java框架----一个简单的例子【翻译】
原文:http://www.programcreek.com/2011/09/how-to-design-a-java-framework/ 原文和翻译都只是参考,如有不对,欢迎指正. 你可能会好奇框 ...
随机推荐
- [Android] osx下如何使用SublimeText阅读Android系统源码
reference to : http://www.jianshu.com/p/c295d2729ecf 平时使用Sublimetext都是打开单个文件,这次要导入几万个文件,这在一些ide中称为pr ...
- HDU1561:The more, The Better(树形DP+01背包)
Problem Description ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物.但由于地理位置原因,有 ...
- Android几种Service常驻内存的小思路
老话说的好:躲得了初一,躲只是高三 ! 大多数的Android开发人员遇到的一个问题-怎样保证Service常驻内存. 近期我最终也在项目中务必幸运的遇到了 先来了解一下什么是Service常驻内存. ...
- C++中List的用法
Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. assign() 给list赋值 back() 返回最后一个元素 begin() ...
- js中replace的用法
replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也 ...
- C++类模板的三种特化
说起C++的模板及模板特化, 相信很多人都很熟悉 ,但是说到模板特化的几种类型,相信了解的人就不是很多.我这里归纳了针对一个模板参数的类模板特化的几种类型, 一是特化为绝对类型: 二是特化为引用,指针 ...
- COM中的HRESULT
- [Node.js]24. Level 5: Express, Express routes
Create an express route that responds to GET requests at the URL /tweets that responds with the file ...
- Opera Unit如何自定义My Opera的网页界面
1 双击Opera Unite Home进入你的个人主页 2 点击你的头像进入你的个人信息设置页面,然后点击右上角的设置图标 3 在下拉菜单中选择"Customize design" ...
- Python中参数多个值的表示法
今天在写Python脚本时,调用了数据管理-制图综合-融合工具,在ArcGIS里操作的参数设置如下: 如果融合字段只有一个那好办,如果融合字段有多个我该怎么表达,查看帮助文档中的示例代码明白了: 所以 ...