1 简述
通过研究selenium-webdriver的源码,笔者发现其实webdriver的实现原理并不高深莫测无法揣度。在这里以webdriver ruby binding的firefox-webdriver实现为例,简单介绍一下webdriver的工作原理。
当测试脚本启动firefox的时候,selenium-webdriver 会首先在新线程中启动firefox浏览器。如果测试脚本指定了firefox的profile,那么就以该profile启动,否则的话就新启1个profile,并启动firefox;
firefox一般是以-no-remote的方法启动,启动后selenium-webdriver会将firefox绑定到特定的端口,绑定完成后该firefox实例便作为webdriver的remote server存在;
客户端(也就是测试脚本)创建1个session,在该session中通过http请求向remote server发送restful的请求,remote server解析请求,完成相应操作并返回response;
客户端接受response,并分析其返回值以决定是转到第3步还是结束脚本
http://17test.info/?p=280
2 selenium需要改进的地方
1 不能够直接使用已经打开的浏览器, 即使是用selenium打开的也不行
2 js弹出窗, 不支持IE
driver.switch_to.alert.accpect会被阻塞, 然后报runtime error
3 同时打开多个TAB, 多个实例, 多个浏览器?
3 笔记
通过 driver = Selenium::WebDriver.for :firefox 获取到的driver, 根据不同的浏览器,
@return [Driver]
#
# @see Selenium::WebDriver::Remote::Bridge
# @see Selenium::WebDriver::Firefox::Bridge
# @see Selenium::WebDriver::IE::Bridge
# @see Selenium::WebDriver::Chrome::Bridge
# @see Selenium::WebDriver::Android::Bridge
# @see Selenium::WebDriver::IPhone::Bridge
# @see Selenium::WebDriver::Opera::Bridge
#
irb(main):009:0> driver.capabilities
=> #<Selenium::WebDriver::Remote::Capabilities:0xae5c40 @capabilities={:browser_name=>"firefox", :version=>"10.0.2", :pl
atform=>:winnt, :javascript_enabled=>true, :css_selectors_enabled=>true, :takes_screenshot=>true, :native_events=>false,
:rotatable=>nil, :firefox_profile=>nil, :proxy=>nil, "handlesAlerts"=>true}>
需要注意的是 for返回的数据类型是Driver, 有一个实例变量@bridge, 很多公用的方法定义在remote::Bridge中, 特殊的方法定义在Firefox::Bridge中。由于firefox的bridge为私有变量, 不能这样用: driver.bridge
重命名的方法有 first all script --> find_element find_elements execute_script
最终调用的是remote/bridge.rb中的raw_execute方法: 加上一个puts语句 可以调试
irb(main):002:0> s=Selenium::WebDriver.for :firefox
post
session
{:desiredCapabilities=>#<Selenium::WebDriver::Remote::Capabilities:0xf606a8 @capabilities={:browser_name=>"firefox", :ve
rsion=>"", :platform=>:any, :javascript_enabled=>true, :css_selectors_enabled=>true, :takes_screenshot=>true, :native_ev
ents=>true, :rotatable=>false, :firefox_profile=>nil, :proxy=>nil}>}
=> #<Selenium::WebDriver::Driver:0x..f9f8da084 browser=:firefox>
irb(main):003:0> s.get 'http://baidu.com'
post
session/76252388-68ae-4145-ab92-049f47e7aa4d/url
{:url=>"http://baidu.com"}
=> ""
irb(main):009:0> a= s.find_element :id=>'q'
post
session/76252388-68ae-4145-ab92-049f47e7aa4d/element
{:using=>"id", :value=>"q"}
分享到:
相关推荐
本书是一本从入门到精通模式的Selenium WebDriver实战经验分享书籍。全书共分为四个部分:第1部分基础篇主要讲解自动化测试相关的基础理论、WebDriver 环境安装、单元测试工具的使用方法以及 WebDrvier的入门使用...
selenium webdriver是web自动化的一本经典著作,吴老集合python java不同版本。本资源为java版本,内容较新,无论是入门还是提升都有很大帮助。
关于Selenium WebDriver工作原理的介绍,原理相关描述
selenium RC与selenium webdriver的区别
Selenium WebDriver 3 Practical Guide will walk you through the various APIs of Selenium WebDriver, which are used in automation tests, followed by a discussion of the various WebDriver implementations...
Selenium WebDriver 3.14.0 本来需要.net45 我改为.net2.0 希望喜欢的人需要。 dll 反编译,嵌入程序内。无需调用那个讨厌的dll。 绝对不骗人,骗人是小狗。架构复杂修改麻烦,各位体谅
seleniumwebdriver(python) (第三版)
selenium webdriver基于python源码案例,全是案例适合小白入门学习
selenium2.0自动化
Selenium WebDriver Practical Guide will guide you through the various APIs of WebDriver which should be used in automation tests, followed by a discussion of the various WebDriver implementations ...
Selenium WebDriver Recipes in C#(2nd) 英文epub 第2版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
自动化测试:Selenium webdriver学习笔记C#版
Selenium WebDriver 学习笔记 API大全 中文API 元素 操作大全
悠悠的selenium webdriver基于python源码案例,全是案例适合小白入门学习,现在有的资源都是只有4章
Selenium Webdriver自动化测试 operadriver win64位,最新版本(20150611)
对于Selenium更加详细的操作和使用,推荐一本书《selenium webdriver(python)第三版》,该书详细的讲解了webdriver的用法
selenium WebDriver 安装包及启动服务的一些命令 对于正在学习自动化测试的小伙伴们非常有用
Solve your Selenium WebDriver problems with this quick guide to automated testing of web applications with Selenium WebDriver in C#. Selenium WebDriver Recipes in C#, Second Edition contains hundreds ...
selenium webdriver基于python源码案例,全是案例适合小白入门学习
Solve your Selenium WebDriver problems with this quick guide to automated testing of web applications with Selenium WebDriver in C#. Selenium WebDriver Recipes in C#, Second Edition contains hundreds ...