WebDriver 是按照 server – client 的经典设计模式设计的。
server 端就是 remote server,可以是任意的浏览器。当我们的脚本启动浏览器后,该浏览器就是 remoteserver,它的职责就是等待 client 发送请求并做出相应。
client 端简单说来就是我们的测试代码,我们测试代码中的一些行为,比如打开浏览器,转跳到特定的 url 等操作是以 http 请求的方式发送给被 测试浏览器,也就是 remote server;remote server 接受请求,并执行相应操作,并在 response 中返回执行状态、返回值等信息。
webdriver 的工作流程:
1. WebDriver 启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做为 WebDriver 的 remote server。
2. Client 端通过 CommandExcuter 发送 HTTPRequest 给 remote server 的侦听端口(通信协议: the webriver wire protocol) 3. Remote server 需要依赖原生的浏览器组件(如:IEDriverServer.exe、chromedriver.exe),来转化转
化浏览器的 native 调用。
在 Python 提供了 logging 模块,logging 模块给运行中的应用提供了一个标准的信息输出接口。它提供了 basicConfig()方法用于基本信息的定义。将 debug 模块开启。就可以捕捉到客户端与服务器的交互信息。 - from selenium import webdriver
- import logging
- logging.basicConfig(level=logging.DEBUG)
- diver = webdriver.Firefox()
- diver.get("http://www.baidu.com")
- diver.find_element_by_id("kw").send_keys("selenium")
- diver.find_element_by_id("su").click()
- diver.quit()
复制代码运行脚本,basicConfig()所捕捉的 log 信息。不过 basicConfig()开启的 debug 模式只能捕捉到客户端向服务器所发送的 POST 请求,而无法获取服务器所返回应答信息。我们在后面的章节中将会用 Selenium Server,通过 Selenium Server 将会获取到更详细请求与应答信息。
|