精华内容
下载资源
问答
  • WebDriver

    2019-06-28 11:24:17
    在Selenium2.0中,最大的变化就是引入了WebDriver Api。 WebDriver提供了面相对象的API, 并且对现在流行的动态网页提供了更好的支持 WebDriver VS Selenium-RC WebDriver实际上替代的是Selenium1.0中的...

    在Selenium2.0中,最大的变化就是引入了WebDriver Api。

    WebDriver提供了面相对象的API, 并且对现在流行的动态网页提供了更好的支持

     

    WebDriver VS Selenium-RC

    WebDriver实际上替代的是Selenium1.0中的Selenium-RC。   WebDriver得到了浏览器原生支持,可以直接操作浏览器。 而Selenium-RC的工作方式则完全不同,对于Selenium-RC支持的浏览器,在浏览器被启动时,Selenium-RC会将javascript注入到浏览器,让后通过这些javascript去控制浏览器。

     

    WebDriver  VS  Selenium-Server

    在使用WebDriver做web自动化时,你可能需要用到Selenium-Server。 如果你的测试代码和浏览器都在同一台计算机上,并且你只使用了WebDriver的API,那么你不需要使用Selenium-Server.

    需要配合使用Selenium-Server和WebDriver的情况包括:

    1. 如果你要使用Selenium-Grid去使用多台计算机运行你的测试用例
    2. 如果你需要在远程机器上的浏览器中运行你的用例
    3. You are not using the Java bindings (i.e. Python, C#, or Ruby) and would like to use HtmlUnit Driver   不理解,所以把原文拷贝过来。



     

    展开全文
  • webDriver

    2014-03-27 18:14:27
    基于maven的Selniun 2.0 webdriver环境快速搭建 http://www.cnblogs.com/fnng/archive/2011/12/02/2272610.html Selenium Webdriver学习: http://jarvi.iteye.com/category/203994 ...

    基于maven的Selniun 2.0 webdriver环境快速搭建
    http://www.cnblogs.com/fnng/archive/2011/12/02/2272610.html

    Selenium Webdriver学习: http://jarvi.iteye.com/category/203994

    https://github.com/easonhan007/webdriver_guide

    Selenium WebDriver经验杂记
    http://blog.csdn.net/ant_yan/article/details/8185899
    http://blog.csdn.net/aerchi/article/category/936247

    在Eclipse中使用JUnit4进行单元测试


    1. Selenium Webdriver java 最大化浏览器窗口。

    System.setProperty("webdriver.firefox.bin","D:/MozillaFirefox/firefox.exe");
    WebDriver driver = new FirefoxDriver();
    driver.manage().window().maximize();

    参考文章:http://xebee.xebia.in/2012/04/06/maximize-browser-window-in-selenium-web-driver/

    2. Selenium Webdriver java 浏览器中前进,后退,刷新操作。

    System.setProperty("webdriver.firefox.bin","D:/MozillaFirefox/firefox.exe");
    WebDriver driver = newFirefoxDriver();
    driver.manage().window().maximize();
    driver.get("http://www.google.com.hk");
    driver.navigate().forward();// 前进
    driver.navigate().back();// 后退
    driver.navigate().refresh();// 刷新

    3.WebDriver的几个实现:
    Name ofdriver                Available on whichOS?       Classto instantiate 
    HtmlUnit Driver              All                      org.openqa.selenium.htmlunit.HtmlUnitDriver 
    Firefox Driver                 All                      org.openqa.selenium.firefox.FirefoxDriver 
    Internet Explorer Driver   Windows          org.openqa.selenium.ie.InternetExplorerDriver 
    Chrome Driver               All                     org.openqa.selenium.chrome.ChromeDriver 

    (1)HtmlUnitDriver是纯java的驱动器,全部在内存中运行,不会实际打开浏览器,但其速度很快。 
    (2)Firefox Driver:速度慢。 
    4. TestNG实例:
    WebDriver+TestNG+ANT 实现多浏览器兼容性测试
    5. Webdriver 针对iframe中的元素定位
    Selenium2在使用get()方法打开一个网页的时候,是不会继续加载里面的iframe中的内容的(这一点与Selenium有所区别)。那么,我们就需要人为的要求Selenium2对iframe中的内容进行加载。
    例子一:
    driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@class='g-editor-iframe']"))); 
    例子二:
    driver.switchTo().frame(driver.findElement(By.id("baiduSpFrame")));
    切换主页
    用getWindowHandle()方法可以快速的进行切换回主页:
    StringstrMainHandler = driver.getWindowHandle();
    driver.switchTo().window(strMainHandler);
    关于iframe中 元素定位和xpath,cssSelector定位可参考:
    6.Webdriver中操作下拉列表
    对下拉框进行操作时首先要定位到这个下拉框,new 一个Selcet对象,然后对它进行操作。
    7.Webdriver 利用Actions类模拟鼠标和键盘的操作
    8. Hudson + WebDriver组织自动化测试

    9. Webdirver 利用actions 实现 mouseover方法
    Actionsbuilder =new Actions(driver);
    Actionsmousehover=builder.moveToElement(driver.findElement(By.xxx("***")));
    mousehover.perform(); 
    红色部分根据实际情况修改。
    10. webdriver 中 层级定位
    11. webdriver 执行js脚本
    12. webdriver 等待页面加载完成
    13. 获取页面对象的属性值
    绿色为对象的属性
    pk1=wd.findElement(By.xpath("//input[@id='public_key']")).getAttribute("value");
    System.out.println(pk1);
    14. Webdriver 通过调用JavascriptExecutor使对象隐藏对象出现,操作对象。
    15.Selenium中webdriver的quit()和close()区别
    在关闭driver时用Driver.Quit();不要用Driver.Close();
    Driver.Quit() Quit this dirver, closing everyassociated windows;
    Driver.Close() Close the current window, quiting thebrowser if it is the last window currently open.


    展开全文
  • from selenium import webdriver from time import sleep from selenium.webdriver.support.ui import Select driver=webdriver.Firefox() driver.get("http://www.51zxw.net") sleep(2) #利用Select类来进行定位 ...
  • webdriver安装包

    2013-12-30 01:29:50
    webdriver安装包
  • WebDriver协议 早期Selenium和WebDriver是两个独立的项目,Selenium早期主要依靠将操作转换为JavaScript然后注入浏览器实现浏览器的自动化,WebDriver将浏览器原生API封装成一套更加面向对象的API,但是由于不同...

    WebDriver协议

    早期SeleniumWebDriver是两个独立的项目,Selenium早期主要依靠将操作转换为JavaScript然后注入浏览器实现浏览器的自动化,WebDriver将浏览器原生API封装成一套更加面向对象的API,但是由于不同浏览器内核的差异,因此为了适配,必须对不同浏览器实现不同的API。在Selenium2之后两个项目合并,我们常说的Selenium其实主要指的就是WebDriver API。当前Selenium稳定版本的主版本为3,beta版本的Selenium4已经在路上。

    Selenium或者WebDriver与浏览器交互的基础是WebDriver协议(W3C推荐标准)。WebDriver协议是一个与操作系统、编程语言无关的通过HTTP协议使用JSON作为传输格式的RESTful Web服务。

    WebDriver协议目前有两个版本:

    WebDriver协议之前还有一个废弃的JsonWireProtocol协议,具体见https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol

    WebDriver协议模型中牵扯三个对象:

    • 客户端(Client或local end):可以简单认为就是调用WebDriver API的程序或机器。我们常用的Python WebDriver API就是客户端的一个Python语言绑定。
    • 服务端(Server或remote end):运行RemoteWebDriver的机器,或者支持WebDriver协议的浏览器,比如支持geckodriver的Firefox浏览器、支持chromedriver的Chrome浏览器。WebDriver协议其实只定义了服务端的行为。
    • WebDriver:即各种浏览器的WebDriver协议实现,比如geckodriverchromedriverWebDriver则相当于客户端和服务端的中介,提供WebDriver协议RESTful 服务。客户端通过WebDriver操控服务端(浏览器)。比如Firefox依靠webdriver.xpi扩展来控制浏览器。

    客户端运行后,启动1个会话(session),客户端在该会话中通过WebDriver协议 RESTful 服务端点(endpoint,可简单理解为url)向服务端请求,服务器端接受请求后向客户端返回响应。
    !在这里插入图片描述

    WebDriver协议将端点映射为命令(command)。端点与命令的关系如下(https://www.w3.org/TR/webdriver/#endpoints):

    Method URI Template Command
    POST /session New Session
    DELETE /session/{session id} Delete Session
    GET /status Status
    GET /session/{session id}/timeouts Get Timeouts
    POST /session/{session id}/timeouts Set Timeouts
    POST /session/{session id}/url Navigate To
    GET /session/{session id}/url Get Current URL
    POST /session/{session id}/back Back
    POST /session/{session id}/forward Forward
    POST /session/{session id}/refresh Refresh
    GET /session/{session id}/title Get Title
    GET /session/{session id}/window Get Window Handle
    DELETE /session/{session id}/window Close Window
    POST /session/{session id}/window Switch To Window
    GET /session/{session id}/window/handles Get Window Handles
    POST /session/{session id}/window/new New Window
    POST /session/{session id}/frame Switch To Frame
    POST /session/{session id}/frame/parent Switch To Parent Frame
    GET /session/{session id}/window/rect Get Window Rect
    POST /session/{session id}/window/rect Set Window Rect
    POST /session/{session id}/window/maximize Maximize Window
    POST /session/{session id}/window/minimize Minimize Window
    POST /session/{session id}/window/fullscreen Fullscreen Window
    GET /session/{session id}/element/active Get Active Element
    POST /session/{session id}/element Find Element
    POST /session/{session id}/elements Find Elements
    POST /session/{session id}/element/{element id}/element Find Element From Element
    POST /session/{session id}/element/{element id}/elements Find Elements From Element
    GET /session/{session id}/element/{element id}/selected Is Element Selected
    GET /session/{session id}/element/{element id}/attribute/{name} Get Element Attribute
    GET /session/{session id}/element/{element id}/property/{name} Get Element Property
    GET /session/{session id}/element/{element id}/css/{property name} Get Element CSS Value
    GET /session/{session id}/element/{element id}/text Get Element Text
    GET /session/{session id}/element/{element id}/name Get Element Tag Name
    GET /session/{session id}/element/{element id}/rect Get Element Rect
    GET /session/{session id}/element/{element id}/enabled Is Element Enabled
    GET /session/{session id}/element/{element id}/computedrole Get Computed Role
    GET /session/{session id}/element/{element id}/computedlabel Get Computed Label
    POST /session/{session id}/element/{element id}/click Element Click
    POST /session/{session id}/element/{element id}/clear Element Clear
    POST /session/{session id}/element/{element id}/value Element Send Keys
    GET /session/{session id}/source Get Page Source
    POST /session/{session id}/execute/sync Execute Script
    POST /session/{session id}/execute/async Execute Async Script
    GET /session/{session id}/cookie Get All Cookies
    GET /session/{session id}/cookie/{name} Get Named Cookie
    POST /session/{session id}/cookie Add Cookie
    DELETE /session/{session id}/cookie/{name} Delete Cookie
    DELETE /session/{session id}/cookie Delete All Cookies
    POST /session/{session id}/actions Perform Actions
    DELETE /session/{session id}/actions Release Actions
    POST /session/{session id}/alert/dismiss Dismiss Alert
    POST /session/{session id}/alert/accept Accept Alert
    GET /session/{session id}/alert/text Get Alert Text
    POST /session/{session id}/alert/text Send Alert Text
    GET /session/{session id}/screenshot Take Screenshot
    GET /session/{session id}/element/{element id}/screenshot Take Element Screenshot
    POST /session/{session id}/print Print Page

    WebDriver Python API执行流程(反推)

    WebDriver客户端API其实就是实现属性或方法到命令,再到WebDriver协议端点的变换过程。

    例如:WebDriver类的current_url特性

    1. current_url特性其实是命令Command.GET_CURRENT_URL的执行结果。

      @property
      def current_url(self):
           return self.execute(Command.GET_CURRENT_URL)['value']
      
    2. WebDriver类的execute方法通过command_executor.execute(driver_command, params)执行命令。
      command_executor是一个字符串(服务器url)或者remote_connection.RemoteConnection对象。

    3. remote_connection.RemoteConnection类位于selenium\webdriver\remote\remote_connection.py
      remote_connection.RemoteConnection类的_commands属性定义了命令和端点之间的关系。
      Command.GET_CURRENT_URL: ('GET', '/session/$sessionId/url')
      remote_connection.RemoteConnection类的execute方法控制服务端执行命令。

    4. WebDriver类在实例化时会传入command_executor参数,command_executor参数即服务端地址。

    WebDriver Python API执行流程(正推)

    from selenium import webdriver
    
    driver = webdriver.Firefox()
    driver.get("http://www.baidu.com")
    # 服务端地址
    url = driver.command_executor._url  
    print(url)
    

    上述代码的执行流程大致如下:

    1. driver = webdriver.Firefox()即对selenium\webdriver\firefox\webdriver.py中的WebDriver类实例化,WebDriver类继承自selenium\webdriver\remote\webdriver.py中的WebDriver类。WebDriver类构造方法中command_executor参数即服务端地址。
      此时WebDriver启动浏览器,加载webdriver.xpi扩展,监听基于WebDriver协议的请求。
      在日志文件geckodriver.log中可以看到类似1116855012551 geckodriver INFO Listening on 127.0.0.1:54499的记录。

    2. driver.get("http://www.baidu.com")相当于执行Command.GET命令。 WebDriver对象依靠remote_connection.RemoteConnection对象command_executor执行命令。 remote_connection.RemoteConnection类中实现了命令到WebDriver协议的映射Command.GET: ('POST', '/session/$sessionId/url')。执行命令相当于向浏览器发送对应请求。WebDriver将请求发送给浏览器。

       def get(self, url):
           self.execute(Command.GET, {'url': url})
      
    3. 浏览器在接受请求后执行操作(打开百度页面)并返回响应(服务端地址)。WebDriver将响应结果传递给代码。

    展开全文
  • WebDriver实战

    2016-11-30 11:07:04
    本书是一本从入门到精通模式的Selenium WebDriver实战经验分享书籍
  • 根据《Selenium3 Python WebDriver API源码探析(2):Selenium包目录结构、模块功能概述》可知,selenium\webdriver\remote\webdriver.py模块中的WebDriver类定义了通用WebDriver的基本特性,各种浏览器根据自身...

    根据《Selenium3 Python WebDriver API源码探析(2):Selenium包目录结构、模块功能概述》可知,selenium\webdriver\remote\webdriver.py模块中的WebDriver类定义了通用WebDriver的基本特性,各种浏览器根据自身特性继承WebDriver类再做进一步实现。selenium\webdriver\firefox\webdriver.py模块中的WebDriver类实现了FireFox WebDriver,并通过selenium\webdriver\__init__.py向外暴露(from .firefox.webdriver import WebDriver as Firefox)。所以一般使用如下方式初始化FireFox WebDriver。

    from selenium import webdriver
    driver = webdriver.Firefox()
    

    remote WebDriver

    remote WebDriver的类签名为:
    Class WebDriver(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=None, browser_profile=None, proxy=None, keep_alive=False, file_detector=None, options=None)
    构造方法参数为:

    • command_executor :字符串或remote_connection.RemoteConnection 对象。默认为'http://127.0.0.1:4444/wd/hub'
    • desired_capabilities - 新建会话时的capabilities
    • browser_profile - selenium.webdriver.firefox.firefox_profile.FirefoxProfile对象。自定义配置文件。只用于Firefox。
    • proxy - selenium.webdriver.common.proxy.Proxy对象。代理设置。
    • keep_alive - 布尔值。是否设置长连接。默认值为False
    • file_detector - 自定义文件处理器。默认值为None,使用LocalFileDetector()
    • options - Options类实例。浏览器选项设置。

    属性为:

    • session_id:会话ID。
    • capabilities:浏览器返回的capabilities集合。
    • command_executorremote_connection.RemoteConnection 对象。命令的执行对象。
    • error_handlerErrorHandler 对象。错误处理器。

    Firefox WebDriver

    Firefox WebDriver的类签名为:
    Class WebDriver(firefox_profile=None, firefox_binary=None, timeout=30, capabilities=None, proxy=None, executable_path="geckodriver", options=None, service_log_path="geckodriver.log", firefox_options=None, service_args=None, desired_capabilities=None, log_path=None, keep_alive=True)

    Firefox WebDriver构造函数的参数比较复杂,有多个参数功能重复,有一些参数即将废弃,最终这些参数汇集构造成为 capabilities 字典,传递给浏览器。
    对于某些参数,如 firefox_profile andoptions.profile 是互斥的,他们的优先级由特定场景决定。capabilities是最不具体的关键字参数,其次是optionsfirefox_binaryfirefox_profile。具体来讲,如果同时设置 firefox_profileoptions.profile,此时应用的参数为firefox_profileoptions.profile将被忽略。类似地capabilities["moz:firefoxOptions"]["profile"] 的优先级低于options.profile

    构造方法参数为:

    • firefox_profileFirefoxProfile 对象或字符串。如果没有定义,将在操作系统的临时目录中生成一个新的自定义配置文件。
    • firefox_binaryFirefoxBinary 或Firefox二进制文件的路径。如果没有定义,则使用操作系统的Firefox的默认安装位置。
    • timeout: 启动Firefox的超时时间。
    • capabilitiesdesired capabilities字典,即将废弃。
    • proxy:代理设置。
    • executable_pathgeckodriver的路径,默认从系统变量path中获取。
    • optionsoptions.Options实例。
    • service_log_path: 日志存放路径。
    • firefox_options:等同options,即将废弃。
    • service_args:传递给driver服务的参数列表。
    • desired_capabilities:等同于capabilities
    • log_path: 等同service_log_path,即将废弃。
    • keep_alive:是否设置长连接。

    精简后的类签名为:
    Class WebDriver(firefox_profile=None, firefox_binary=None, timeout=30, executable_path="geckodriver", options=None, service_log_path="geckodriver.log", service_args=None, desired_capabilities=None, keep_alive=True)

    扩展安装、卸载方法

    Firefox WebDriver类实现了扩展安装、卸载方法。

    安装扩展

    方法签名为:def install_addon(self, path, temporary=None):
    参数path为扩展的绝对路径。
    返回值为扩展的id,便于卸载时使用。
    案例:

    import selenium.webdriver as webdriver
    
    driver = webdriver.Firefox()
    
    addon_id = driver.install_addon(r"\path\d.xpi")
    print(addon_id)
    

    输出为:{32af1358-428a-446d-873e-5f8eb5f2a72e}d.xpi扩展的id
    在这里插入图片描述

    卸载扩展

    方法签名为:def uninstall_addon(self, identifier):
    参数identifier即安装扩展时返回的扩展id

    展开全文
  • seleniumwebdriver

    2013-04-26 10:39:26
    selenium webdriver学习
  • webdriver火狐驱动

    2017-07-17 19:01:52
    webdriver火狐驱动
  • webdriver安装

    2021-04-01 11:28:57
    首先了解自己所需使用的浏览器,这里以谷歌浏览器为例,火狐、Edge安装方式相同,找相应webdriver即可。 查看自己浏览器的版本 去官网找对应版本的webdriver 网址:...
  • WebDriver初探

    2020-03-23 20:34:02
    webdriver下载地址(WebDriver for Chrome): https://sites.google.com/a/chromium.org/chromedriver/downloads 环境: 1.如果python的环境已经搭建完毕,直接将webdriver.exe丢到python安装的根目录下即可 driver =...
  • WebDriver概述

    2019-08-15 20:42:17
    什么是WebDriver? Webdriver (Selenium2)是一种用于Web应用程序的自动测试工具; 它提供了一套友好的API; Webdriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动; WebDriver API 支持的开发...
  • chrome88 java使用webdriver爬虫设置webdriver.navigator.webdriver属性失败 以前的做法 js.executeScript("Object.defineProperties(navigator,{ webdriver:{ get: () => false } })"); chrome88之后 ...
  • selenium-webdriver-crystal:Crystal编程语言的Selenium Webdriver客户端
  • webdrivers.cr:使用Crystal管理您的Selenium Webdrivers
  • webdriver实用指南

    2017-11-17 22:07:17
    乙醇webdriver实用指南
  • WebDriver命令参考手册

    2020-11-30 17:27:12
    WebDriver命令参考手册
  • 1、selenium1(关键是selenium IDE只支持在火狐浏览器安装组件录制脚本并导出Junit4RC+jave脚本+selenium RC需要运行selenium服务)和selenium2(selenium webdriver包括server+server源码+standal...
  • webdriver 原理:1. WebDriver 启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做为web driver 的remoteserver。2. Client 端通过CommandExcuter 发送HTTPRequest 给remote server 的侦听端口(通信协议: ...
  • webdriver.zip

    2019-12-11 15:36:44
    Python3中使用webdriver,用于python自动测试环境搭建,启动Google chrome浏览器,便于浏览器正常运行
  • 隐藏webdriver

    2020-08-29 22:28:38
    webdriver检测这个问题最明显的就是淘宝登录,当我们使用不加任何隐藏处理的selenium和pyppeteer模拟登陆时,淘宝登录时的人机验证将会返回一个错误信息,其实很多其他网站的反爬机制也会检测这一条。所以我们使用...
  • Selenium通过WebDriver操控浏览器,WebDriver不单是远程控制接口,也是W3C的推荐标准详见https://www.w3.org/TR/webdriver/。 Capabilities(功能)是WebDriver支持的标准命令之外的扩展命令,用于控制端与浏览器端...
  • webdriver jar包

    2019-03-04 13:51:47
    webdriver jar包,2.6版本,只要用于爬取网络的数据来使用。
  • ruby 2.00 selenium webdriver,watir webdriver 备份打包
  • webdriver配置

    2020-10-20 20:10:06
    一、下载webdriver(以chrome为例) 下载地址 https://npm.taobao.org/mirrors/chromedriver:一定要下载与安装的浏览器版本对应的driver 二、将下载的webdriver放到浏览器目录下 1.解压下载的文件 2.将...
  • 本文主要分享webdriver.py模块中关键组织结构,webdriver.py模块是selenium webdriver最核心的模块,实现了webdriver日常使用的几乎所有的API,是做自动化测试必须掌握的模块。 webdriver.py源码结构 1,文档说明,...
  • WebDriver使用入门

    万次阅读 2018-01-15 19:15:24
    WD.py是一个Python WebDriver客户端,实现了WebDriver协议中的大部分API。 它最初是为Macaca(一个Node.js驱动的WebDriver服务器)而设计的,但也可以应用于WebDriver服务器的其他实现,比如Selenium,Appium等。 ...
  • from selenium import webdriver webdriver=webdriver.chrome() webdriver.get() 看B 站视频跟着老师打出来自己显示这个错误’module’ object is not callable 后来搜了搜 发现自己吧chromedriver下载了没有放到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,465
精华内容 14,586
关键字:

webdriver