首页 > 代码库 > (三)WebDriver API(上)

(三)WebDriver API(上)

参考内容:官方API文档,下载链接:http://download.csdn.net/detail/kwgkwg001/4004500

        虫师:《selenium2自动化测试实战-基于python语言》

 

一、WebDriver原理

1、关于WebDriver

设计模式:按照Server-Client的经典设计模式设计;

Server端:即Remote Server(远程服务器),可以是任意的浏览器,当脚本启动浏览器时,该浏览器就是Remote Server,它的职责是等待Client发送请求并做出响应;

Client端:简单来说就是我们的测试代码,测试代码中的一些行为是以HTTP请求的方式发送给被测试浏览器——Remote Server,Remote Server接受请求,执行相应操作,

         并在Response中返回执行状态、返回值等信息;

 

2、WebDriver工作流程

①WebDriver启动目标浏览器,并绑定至指定端口,启动的浏览器实例将作为WebDriver的Remote Server;

②Client端通过CommandExcuter发送HTTPRequest给Remote Server的侦听端口(通信协议:the webdriver wire protocol);

③Remote Server需要依赖原生的浏览器组件(比如:chromedriver.exe)来转化浏览器的native调用;

 

3、WebDriver.log

python提供了logging模块给运行中的应用,提供了一个标准的信息输出接口。它提供了basicConfig方法用于基本信息的定义,开启debug模块,

就可以捕捉到Client端向Server端发送的请求,例子如下:

# 导入logging模块,捕捉Client发送的请求

# coding=utf-8

from selenium import webdriver

import logging

logging.basicConfig(level=logging.DEBUG)

driver = webdriver.chrome("F:\安装工具\python\chromedriver.exe")

driver.get("www.baidu.com")

driver.find_element_by_id("kw").send_keys("selenium")

driver.find_element_by_id("su").click()

driver.quit()

 

二、WebDriver定位方法

WebDriver是基于selenium设计的操作浏览器的一套API,针对多种编程语言都实现了这套API,站在python角度来说,WebDriver是python的一个用于实现Web自动化的第三方库。

1、WebDriver定位方法

WebDriver定位方法提供了八种元素定位方法,所对应的方法、特性分别是:

技术分享

 

2、XPath和CSS的类似功能对比

技术分享

 

3、用By定位元素

针对前面介绍的8种定位方法,WebDriver还提供另一种方法,即:统一调用find_element()方法,通过By来声明定位方法,并且传入对应定位方法的定位参数,例子如下:

find.element()方法只用于定位元素,它需要两个参数,第一个参数是定位的类型,由By提供,第二个参数是定位的具体方式,在使用By之前需要将By类导入;

# 导入By类的包

from selenium.webdriver.common.by import By

find.element(by.id,"kw")

find.element(by.name,"wd")

find.element(by.class_name,"s_ipt")

find.element(by.tag_name,"input")

find.element(by.link_text,"新闻")

find.element(by.partial_link_text,"新")

find.element(by.xpath,"//*[@class=‘bg s_btn‘")

find.element(by.css_selector,"span.bg s_btn_wr>input#su")

 

PS:上面的例子取自百度首页的前端元素,延伸阅读可以参考以下链接:

测试教程网:http://www.testclass.net/selenium_python/

python+selenium分类:http://www.cnblogs.com/AlwinXu/tag/Python/

关于UI自动化,建议系统的了解学习一下前端相关的基础知识,可以去W3C看看。。。

 

 

 

(三)WebDriver API(上)