Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代。

不过事实却并非如此,现今原本早应退役的selenium 1.x却还是多数人坚定的选择,究其原因不过是1.x时代遗留下了大量的文档,代码,教程让人们误以为1.x还是这个年代的主流,还应该光鲜亮丽在前台演出属于它的美好。长江后浪推前浪,最为前浪的selenium 1.x的宿命应该是死在沙滩上。

好了,直入主题,由于开源社区不再维护selenium 1.x再加之更为先进的selenium 2.0确实有不少优势之初可以完全取代1.x,在这里笔者会花一些笔墨,若干篇幅,争取深入浅出的讲解selenium 2.0的一些基本知识,常用方法和高级扩展,但由于笔者水平和时间精力等确实有限,文中应该避免不了谬误和臆断之处,还望众位读者多多海涵。

本文中所以代码和示例均由Ruby/Python/Java编写,本文介绍的webdriver api也主要是ruby/python/java binding。所以首先请确保ruby/python/java语言在开发环境上正确安装。

教程的第一节从selenium 2.0和webdriver关系说起。

Selenium 2.0 和webdriver之间有什么关系,有什么不可告人的秘密?说来话长,但也简单。Selenium 2.0其实就是webdriver。就像张飞就是张翼德,关羽就是关云长一样,叫法不同但内容却是一样的。

安装ruby/python/java

ruby的话安装ruby1.8.7以上的版本。注意selenium-webdriver只支持1.8.7以上的ruby版本;

python的话请安装python2.x,本文写作时webdriver尚不支持python3;

java的话请安装jdk5以上的版本;

安装selenium-webdriver

ruby 安装selenium-webdriver

打开命令行,输入下列代码完成安装。注意,如果你的开发环境需要http proxy的话,请注意在gem命令中加入–http_proxy参数;

gem install selenium-webdriver [--http_proxy]

在命令行中输入gem list,如果selenium-webdriver正确安装,则其应该出现在结果列表里。在本文写作时,selenium webdriver的最新版本应该是2.32.1;

gem list selenium-webdriver

更具体的细节请参考这里

python 安装selenium-webdriver

参见这里

java 安装selenium-webdriver

安装chrome

本文使用chrome作为测试浏览器进行讲解,所以请确保开发环境上正确安装了chrome。由于chrome版本更新较快,我们只需要选择1个稳定版本安装既可,本文中笔者使用的版本是chrome 23.0.1271.95, chrome driver的版本是26.0.1383.0;由于driver的版本高于chrome的版本,所以笔者在交互式环境中启动chrome出有报错信息,但只要chrome能启动就好,报错信息可以忽略。

安装chrome driver和ie driver

参见这里

简单的baidu test

下面我们写几行代码在初次感受一下webdriver的魅力,好吧,说老实话原生的selenium webdriver并没有什么独特的魅力,相反到是watir-webdriver更加的平易近人老少咸宜。这个不是文本讨论的范畴,暂且打住。

# ruby 代码

require 'rubygems' # for ruby187 only

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :chrome

driver.get "http://www.baidu.com"

sleep 3

driver.find_element(:id, 'kw').send_keys "Hello WebDriver!"

driver.find_element(:id, 'su').click

puts driver.title

driver.quit

# python 代码

from time import sleep

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('http://www.baidu.com')

sleep(3)

driver.find_element_by_id('kw').send_keys('Hello WebDriver!')

driver.find_element_by_id('su').click()

print driver.title

driver.quit()

// java代码

// 文件BaiduTest.java

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

public class BaiduTest {

public static void main(String[] args) {

// TODO Auto-generated method stub

WebDriver driver = new ChromeDriver();

driver.get("http://www.baidu.com");

driver.findElement(By.id("kw")).sendKeys("Hello Webdriver!");

driver.findElement(By.id("su")).click();

System.out.println(driver.getTitle());

driver.quit();

}

}

如果一切顺利的话,这几行代码将会打开chrome浏览器,然后转跳到baidu首页。等待3秒后在搜索框中输入Hello WebDriver并提交搜索结果至后台。然后在命令行打印出当前页面的title,并关闭chrome浏览器。

如果你的代码不能顺利运行,请从如下几个方面进行检查。

ruby 版本

ruby的版本是否是1.8.7以上并正确安装;

是否正确安装了Selenium WebDriver;

代码输入是否有误;

chrome driver是否正确安装;

chrome版本与chrome driver版本是否适配,从理论上说,两者版本号 基本 相同就可以了;

python 版本

python的版本是否是2.x并正确安装;

是否正确安装了Selenium WebDriver;

代码输入是否有误;

chrome driver是否正确安装;

chrome版本与chrome driver版本是否适配,从理论上说,两者版本号 基本 相同就可以了;

java 版本

是否安装了jdk,注意不是jre;

是否正确引入了jar包,一般来说你需要引入selenium-java-VERSION.jar以及selenium-server-standalone-VERSION.jar

是否正确安装了Selenium WebDriver;

chrome driver是否正确安装;

chrome版本与chrome driver版本是否适配,从理论上说,两者版本号 基本 相同就可以了;

代码输入是否有误;

Selenium-WebDriver ruby/python/java binding的安装实际上非常的简单和快速,稍微有点ruby/pyton/java基础的读者应该能够顺利的自行完成。

下一节将介绍webdriver的启动和关闭,欢迎继续关注。

乙醇的selenium java_ruby/python/java全覆盖的Selenium-Webdriver系列教程(1)————快速开始...相关推荐

  1. Selenium Webdriver系列教程(1)—快速开始

    Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代. 不过事实却并非如此,现今原本早应退役的selenium 1. ...

  2. 【全网最全的博客美化系列教程】06.推荐和反对炫酷样式的实现

    全网最全的博客美化系列教程相关文章目录 [全网最全的博客美化系列教程]01.添加Github项目链接 [全网最全的博客美化系列教程]02.添加QQ交谈链接 [全网最全的博客美化系列教程]03.给博客添 ...

  3. 【全网最全的博客美化系列教程】08.自定义地址栏Logo

    全网最全的博客美化系列教程相关文章目录 [全网最全的博客美化系列教程]01.添加Github项目链接 [全网最全的博客美化系列教程]02.添加QQ交谈链接 [全网最全的博客美化系列教程]03.给博客添 ...

  4. (4.2万字,重启2020)“从零到部署”Vue全栈电商应用系列教程---正式完结

    作者:一只图雀 Github仓库:(前端[1],后端[2]) 图雀社区主站(首发):图雀社区[3] 博客:掘金[4].知乎[5].慕课[6] 公众号:图雀社区[7] 联系我:关注公众号后可以加图雀酱微 ...

  5. 【全网最全的博客美化系列教程】02.添加QQ交谈链接

    全网最全的博客美化系列教程相关文章目录 [全网最全的博客美化系列教程]01.添加Github项目链接 [全网最全的博客美化系列教程]02.添加QQ交谈链接 [全网最全的博客美化系列教程]03.给博客添 ...

  6. 【全网最全的博客美化系列教程】05.公告栏个性时间显示的实现

    全网最全的博客美化系列教程相关文章目录 [全网最全的博客美化系列教程]01.添加Github项目链接 [全网最全的博客美化系列教程]02.添加QQ交谈链接 [全网最全的博客美化系列教程]03.给博客添 ...

  7. 【全网最全的博客美化系列教程】03.给博客添加一只萌萌哒的小仓鼠

    全网最全的博客美化系列教程相关文章目录 [全网最全的博客美化系列教程]01.添加Github项目链接 [全网最全的博客美化系列教程]02.添加QQ交谈链接 [全网最全的博客美化系列教程]03.给博客添 ...

  8. 2021年最新最全Flink系列教程_Flink快速入门(概述,安装部署)(一)(JianYi收藏)

    文章目录 引言 相关教程直通车: day01_Flink概述.安装部署和入门案例 今日目标 Flink概述 什么是批处理和流处理 为什么需要流计算 Flink的发展史 Flink的官方介绍 Flink ...

  9. java nio 如何使用_Java NIO 系列教程(转)

    原文中说了最重要的3个概念, Channel 通道 Buffer 缓冲区 Selector 选择器 其中Channel对应以前的流,Buffer不是什么新东西,Selector是因为nio可以使用异步 ...

最新文章

  1. QIIME 2用户文档. 13训练特征分类器Training feature classifiers(2019.7)
  2. 今天下棋,结合以前一些技巧的总结
  3. linux系统数据库类型,linux下的数据类型
  4. 如何将应用程序分为三个主要层
  5. [牛客数据库SQL实战] 11~20题及个人解答
  6. Rust 编程有什么好?
  7. C#中类的修饰符,this关键字和static关键字
  8. 毕设题目:Matlab语音去噪
  9. 计算机硬件常识知识,计算机硬件基础知识大全
  10. 2019最新黑马视频教程分享给大家十次方乐优商城项目下载
  11. Android过渡框架之共享元素过渡
  12. python matplotlib绘图同时支持宋体和timesnewroman
  13. centos 8 的图形操作界面在哪_【行测备考】立体图形截面有哪些实用技法?
  14. SVM与K-Means
  15. 玩玩Simulink——直流电机仿真
  16. java计算机毕业设计家庭理财管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  17. js关闭当前网页的代码
  18. 线程间之间是如何通信的?
  19. java 0l_关于java:[L数组符号-它来自哪里?
  20. json数据的两种格式及两种json方法

热门文章

  1. 谈思生物医疗直播—可瑞生物CEO谢兴旺博士“TCR创新药的现状和展望”
  2. sklearn快速入门教程:处理分类型数据
  3. IntelliJ IDEA 如何彻底删除项目的步骤
  4. 回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证
  5. FreeIPA+Gitlab实现用户管理
  6. 鼎捷T100——XG报表样板引起的BUG
  7. 【ISP】Contrast
  8. Neovim开发环境搭建(2021.07.01)
  9. 200 smart和博图wincc做项目
  10. 数学符号R表示什么?以及带有上标的R代表什么?