零、姿势

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操作一下并导出代码,略微改改就能直接用了。

一、进行百度搜索并点击链接

  1. //WebDriver是一个接口,每一种浏览器都有一个实现类(多态)
  2. WebDriver webDriver = new FirefoxDriver();
  3. webDriver.manage().window().maximize();
  4. //与浏览器同步非常重要,必须等待浏览器加载完毕
  5. webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
  6. //下面这句等价于webDriver.navigate().to("www.baidu.com");
  7. webDriver.get("http://www.baidu.com");
  8. //在输入框中填写要搜索的内容
  9. WebElement kw = webDriver.findElement(By.id("kw"));
  10. kw.sendKeys("java用selenium库控制chrome");
  11. //点击搜索按钮
  12. WebElement su = webDriver.findElement(By.id("su"));
  13. su.click();
  14. webDriver.findElements(By.className("result")).forEach(x -> {
  15. System.out.println(x.getText());
  16. });
  17. //寻找包含weiyinfu的搜索条目
  18. webDriver.findElement(By.partialLinkText("weiyinfu")).click();
  19. //webDriver.close();
  20. System.out.println("Hello World!");

二、新标签页打开链接

两种方式,一个原理。原理就是模拟快捷键。


  1. /**
  2. * 原理就是模拟浏览器的快捷键CTRL+T,
  3. * 由此可知,通过快捷键的方式可以实现的功能,
  4. * 例如:前进、后退、书签、收藏等操作都可以实现
  5. */
  6. public class 新标签页打开链接 {
  7. static void method1(WebDriver webDriver) {
  8. Actions actionOpenLinkInNewTab = new Actions(webDriver);
  9. actionOpenLinkInNewTab.keyDown(Keys.CONTROL).sendKeys("t").keyUp(Keys.CONTROL).perform();
  10. webDriver.get("http://www.baidu.com");
  11. actionOpenLinkInNewTab.perform();
  12. webDriver.switchTo().window(webDriver.getWindowHandles().toArray()[1].toString());
  13. webDriver.get("http://www.baidu.com");
  14. }
  15. static void method2(WebDriver webDriver) {
  16. webDriver.get("http://www.baidu.com");
  17. webDriver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
  18. webDriver.switchTo().window(webDriver.getWindowHandles().toArray()[1].toString());
  19. webDriver.get("http://www.baidu.com");
  20. }
  21. public static void main(String[] args) {
  22. //设置好浏览器驱动器的位置
  23. System.setProperty("webdriver.gecko.driver",
  24. "C:\\Users\\weidiao\\Desktop\\geckodriver-v0.16.1-win64\\geckodriver.exe");
  25. WebDriver webDriver = new FirefoxDriver();
  26. method1(webDriver);
  27. // method2(webDriver);
  28. }
  29. }

三、模拟登陆博客园并发表评论

  1. WebDriver webDriver = new FirefoxDriver();
  2. //设置默认等待时间,如果没有发现要找的元素就会默认等待30秒钟
  3. webDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  4. webDriver.get("http://www.cnblogs.com/weidiao");
  5. webDriver.findElement(By.id("homepage1_HomePageDays_DaysList_ctl01_DayList_TitleUrl_0")).click();
  6. webDriver.findElement(By.linkText("登录")).click();
  7. webDriver.findElement(By.id("input1")).clear();
  8. webDriver.findElement(By.id("input1")).sendKeys("weiyinfu");
  9. webDriver.findElement(By.id("input2")).clear();
  10. webDriver.findElement(By.id("input2")).sendKeys("xxxxxxx");
  11. webDriver.findElement(By.id("remember_me")).click();
  12. webDriver.findElement(By.id("signin")).click();
  13. webDriver.findElement(By.id("tbCommentBody")).sendKeys("现在时间" + new Date());
  14. 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几个例子的更多相关文章

  1. java爬取网页内容 简单例子(2)——附jsoup的select用法详解

    [背景] 在上一篇博文java爬取网页内容 简单例子(1)——使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则表 ...

  2. Windows下RabbitMQ 的下载、配置、Java实现生产者和消费者例子

    RabbitMQ是一个轻量级的消息代理中间件,支持多种消息通信协议,支持分布式部署,支持运行于多个操作系统,具有灵活.高可用等特性.RabbitMQ支持多种协议,其中最为重要的是高级消息队列协议(AM ...

  3. java+eclipse+selenium环境搭建

    这几天在学selenium,大头虾的我.安装环境还是遇到了挺多问题,赶紧来记录下.不然下次又...(参考虫师的<Selenium2 Java自动化测试实战>),就随便写写加深下自己的印象. ...

  4. Selenium 简单的例子

    Selenium是一个web自动化验收测试框架.   Selenium Client Driver - Selenium 2.0 Document http://seleniumhq.github.i ...

  5. java用selenium库控制chrome

    一.简介 selenium是浏览器自动化工具,可以通过程序来控制浏览器行为,这就是selenium!你可以用它做任何你想做的事情.很多时候人们用它测试web应用,但selenium的用途绝不仅限于此. ...

  6. Java日期格式化及其使用例子收集

    1 SimpleDateFormat担当重任,怎样格式化都行 import java.util.Date; import java.text.SimpleDateFormat; public clas ...

  7. java socket编程开发简单例子 与 nio非阻塞通道

    基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...

  8. 用Java开发gRPC服务的例子分析

    本文的代码例子来自:https://github.com/grpc/grpc-java  定义服务 这一步与其他语言完全一样,需要定义gRPC的服务.方法.request和response的类型. 完 ...

  9. 如何设计Java框架----一个简单的例子【翻译】

    原文:http://www.programcreek.com/2011/09/how-to-design-a-java-framework/ 原文和翻译都只是参考,如有不对,欢迎指正. 你可能会好奇框 ...

随机推荐

  1. [Git] 写文章 史上最全文献检索、阅读及管理攻略

    copy from  : https://zhuanlan.zhihu.com/p/30605683 一.查文献 首先,我认为需要常备几个体量大.文献全的数据库,有针对性找哦!下面列出了一些适合所有专 ...

  2. 项目bug的修正

    这几个月来,大部分业余时间,都花在阅读软件工程和编译原理方面的书籍上了.软件工程方面的书,包括软件需求.风险管理.敏捷建模,系统设计,软件项目管理,还有一些类似于的沉思录书籍等. 在这些书中,都只是讲 ...

  3. C/C++中printf/cout 计算顺序与缓冲区问题

    1.printf/cout在同一个语句中都是从右向左计算的. 看如下的代码: #include <stdio.h> int main() { ; printf("%d %d&qu ...

  4. 浅析Linux线程调度

    在Linux中,线程是由进程来实现,线程就是轻量级进程( lightweight process ),因此在Linux中,线程的调度是按照进程的调度方式来进行调度的,也就是说线程是调度单元.Linux ...

  5. HTML5 Canvas,WebGL,CSS Shaders,GLSL的暧昧关系 【转】

    HTML5 Canvas,WebGL,CSS Shaders,GLSL的暧昧关系 这篇文章发布于 2011年10月10日,星期一,17:14,归类于 canvas相关. 阅读 58013 次, 今日 ...

  6. [leetcode]Valid Number @ Python

    原题地址:http://oj.leetcode.com/problems/valid-number/ 题意:判断输入的字符串是否是合法的数. 解题思路:这题只能用确定有穷状态自动机(DFA)来写会比较 ...

  7. NYOJ-267 郁闷的C小加(二)

    郁闷的C小加(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 聪明的你帮助C小加解决了中缀表达式到后缀表达式的转换(详情请参考“郁闷的C小加(一)”),C小加很 ...

  8. Cognos第三方权限认证Oracle用户库

    一:概要描述 1.1:项目背景 Cognos具有强大的报表功能,但是却没有提供一个完善的用户管理体系,针对商业智能系统对数据的安全性要求,我们必须实现不同用户对不同数据的访问,确保企业级以及部门级的数 ...

  9. [Javascript] Function Expression Ex, Changing Declarations to Expressions

    Inside the Haunted Hickory House file, developers for the Forest of Function Expressions Theme Park ...

  10. Java中看今天是星期几,礼拜几

    下面这段代码就能达到目的: Date today = new Date();        Calendar c=Calendar.getInstance();        c.setTime(to ...