`
yanzilee9292
  • 浏览: 538364 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

selenium webdriver杂记

 
阅读更多

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实战宝典(吴晓华)

    本书是一本从入门到精通模式的Selenium WebDriver实战经验分享书籍。全书共分为四个部分:第1部分基础篇主要讲解自动化测试相关的基础理论、WebDriver 环境安装、单元测试工具的使用方法以及 WebDrvier的入门使用...

    selenium WebDriver原理介绍

    Selenium WebDriver 是一款广泛使用的自动化测试工具,专为Web应用程序设计。它允许程序员模拟真实用户在浏览器中的操作,如点击、输入、导航等,从而进行功能性和兼容性测试。了解其工作原理对于优化自动化测试脚本...

    selenium webdriver+chrome插件.zip

    【标题】"selenium webdriver+chrome插件.zip" 涉及的核心知识点是Selenium WebDriver,特别是它在Chrome浏览器中的应用以及与Firefox的交互。这个压缩包包含了Selenium IDE的Chrome插件,以及对应的WebDriver驱动...

    Selenium WebDriver实战(JAVA版本)

    selenium webdriver是web自动化的一本经典著作,吴老集合python java不同版本。本资源为java版本,内容较新,无论是入门还是提升都有很大帮助。

    python +selenium webdriver 学习借鉴

    Python + Selenium WebDriver 学习借鉴 Python 是一种广泛使用的编程语言,Selenium 是一个自动化测试工具,WebDriver 是 Selenium 的一个组件,用于自动化浏览器操作。在本文档中,我们将学习如何使用 Python 和 ...

    Selenium WebDriver 所需jar包

    Selenium WebDriver是一款强大的自动化测试工具,它允许程序员模拟真实用户在浏览器上的操作,进行Web应用程序的功能测试和验收测试。在Java环境下,Selenium WebDriver通常需要引入相应的jar包才能正常工作。...

    selenium WebDriver比较新的安装包

    **Selenium WebDriver** 是一个广泛使用的自动化测试工具,主要用于网页应用程序的测试。它模拟了真实用户的浏览器行为,允许测试人员编写脚本来控制浏览器执行各种操作,如点击按钮、填写表单、导航等。WebDriver ...

    selenium webdriver基于python源码案例.zip

    《Selenium WebDriver基于Python源码案例》是一份专为初学者设计的教程,旨在通过实践案例帮助用户快速掌握Selenium WebDriver与Python的结合使用。这个压缩包中的资源,特别是`.epub`格式的电子书,提供了丰富的...

    selenium webdriver第三版

    Selenium WebDriver是自动化测试领域的一款强大工具,尤其在Web应用测试方面表现卓越。它通过模拟用户行为与浏览器进行交互,从而实现对网页的自动化控制。《Selenium WebDriver(Python)第三版》这本书深入浅出地...

    Selenium WebDriver Practical Guide

    根据给定文件信息,标题为“Selenium WebDriver Practical Guide”,描述提及这是2014年出版的、关于Selenium的实用指南,非常适合想要深入学习该领域的人。虽然部分内容中包含了一些OCR扫描文字的识别错误,但还是...

    selenium webdriver基于python源码案例.pdf

    ### selenium webdriver基于python源码案例 #### 一、Selenium简介与环境搭建 **1.1 Selenium概述** Selenium是一个强大的工具集,主要用于自动化Web应用的测试。它支持多种编程语言,如Java、C#、Python等,并能...

    selenium webdriver 3 practical guide 第二版

    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 operadriver_win64

    **Selenium Webdriver** Selenium Webdriver 是一个广泛使用的开源自动化测试框架,专门设计用于测试Web应用程序。它允许程序员模拟真实用户与浏览器的交互,包括点击、输入文本、导航等操作,从而实现对Web应用的...

    Selenium WebDriver中使用By.Xpath快速定位页面元素

    Selenium WebDriver 中使用 By.Xpath 快速定位页面元素 Selenium WebDriver 是一个自动化测试工具,可以模拟用户交互来对 Web 应用程序进行测试。其中,定位页面元素是自动化测试的关键步骤。By.Xpath 是一种快速...

    Selenium WebDriver的工作原理.docx

    Selenium WebDriver 是一款强大的自动化测试工具,用于模拟真实用户在浏览器上的交互行为。其工作原理主要涉及自动化测试代码、浏览器驱动和浏览器这三个关键组件。我们可以将这个过程类比为出租车服务,其中工程师...

    Selenium WebDriver 3.14.0 C# 最新版示例

    Selenium WebDriver 3.14.0 本来需要.net45 我改为.net2.0 希望喜欢的人需要。 dll 反编译,嵌入程序内。无需调用那个讨厌的dll。 绝对不骗人,骗人是小狗。架构复杂修改麻烦,各位体谅

    selenium webdriver基于python源码案例.epub

    selenium webdriver基于python源码案例,全是案例适合小白入门学习

Global site tag (gtag.js) - Google Analytics