51Testing软件测试论坛

标题: WebDriver 原理 [打印本页]

作者: 测试积点老人    时间: 2018-12-12 17:48
标题: WebDriver 原理

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 模块开启。就可以捕捉到客户端与服务器的交互信息。

  1. from selenium import webdriver
  2. import logging
  3. logging.basicConfig(level=logging.DEBUG)
  4. diver = webdriver.Firefox()
  5. diver.get("http://www.baidu.com")
  6. diver.find_element_by_id("kw").send_keys("selenium")
  7. diver.find_element_by_id("su").click()
  8. diver.quit()
复制代码

运行脚本,basicConfig()所捕捉的 log 信息。不过 basicConfig()开启的 debug 模式只能捕捉到客户端向服务器所发送的 POST 请求,而无法获取服务器所返回应答信息。我们在后面的章节中将会用 Selenium  Server,通过 Selenium Server 将会获取到更详细请求与应答信息。




作者: Miss_love    时间: 2020-12-29 09:05
支持分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2