设为首页 收藏本站
查看: 1227|回复: 0

[经验分享] ruby/python/java全覆盖的Selenium-Webdriver系列教程(1)————快速开始

[复制链接]

尚未签到

发表于 2015-4-20 11:20:43 | 显示全部楼层 |阅读模式
  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的启动和关闭,欢迎继续关注。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58777-1-1.html 上篇帖子: Python之美--Decorator深入详解(一) 下篇帖子: Python标准库03 路径与文件 (os.path包, glob包)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表