ruby/python/java全覆盖的Selenium-Webdriver系列教程(1)————快速开始
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的启动和关闭,欢迎继续关注。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· 程序员常用高效实用工具推荐,办公效率提升利器!
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 【译】WinForms:分析一下(我用 Visual Basic 写的)