学习笔记-1. 初识Selenium

什么是自动化测试

自动化测试就是,假定一些预设值,由机器自动化完成的测试。

auto

web自动化测试,将自动化测试技术艺能用到web测试中,是假定一些预设值,由程序驱动浏览器来完成web程序的测试,如下图:

web

Selenium

web自动化测试的技术手段和框架很多,这里我们主要介绍Selenium

Selenium官网

Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像用户在操作一样。

我们通常所说的Selenium是对Seleninum的总称,其中包括三个项目,分别是:

1. Selenium WebDriver
2. Selenium IDE
3. seleninum Grid

后续相关的文章我们只关注Seleninum WebDriver

Selenium WebDriver

selenium webdriver 其实就是不同语言基于实现了W3C WebDriver协议从而达到能控制浏览器的代码库,它提供了简单的API接口使测试人员可以很方便的控制浏览器的各种行为。

运行自动化的几种方式

运行机理:webdriver通过driver(浏览器驱动)将执行命令发送给浏览器;同样的浏览器在执行玩命令之后通过相同的通道将信息返回给webdriver。

整体就是一个C/S架构,我们的webdriver是作为客户端存在。

  1. test1
    这种方式是Seleninum Webdriver和浏览器驱动程序和浏览器在同一台主机

  2. test2

    当然我们也可以将webdriver独立到另外一台服务器,然后通过Remote进行自动化。

  3. test3
    远程连接我们还可以通过Seleninum Server或者Seleninum Grid来实现,从而进行分布式的测试。

环境安装

Python

Selenium

浏览器驱动: 相关地址

简单实例

from selenium import webdriver
import time

driver = webdriver.Chrome(executable_path='./chromedriver')
driver.maximize_window()
driver.get('https://www.baidu.com')
driver.find_element_by_id('kw').send_keys('python')
driver.find_element_by_id('su').click()
time.sleep(2)
driver.quit()

代码分析:

其实实例化driver的核心代码是这段,我们可以通过IDE进入到源码中,看到首先建立Service,其实就是通过命令行将浏览器驱动运行起来

self.service = Service(
    executable_path,
    port=port,
    service_args=service_args,
    log_path=service_log_path)
self.service.start()

服务启动后,创建一个连接,从而进行后续的操作

try:
    RemoteWebDriver.__init__(
        self,
        command_executor=ChromeRemoteConnection(
            remote_server_addr=self.service.service_url,
            keep_alive=keep_alive),
        desired_capabilities=desired_capabilities)
except Exception:
    self.quit()
    raise

正如我们介绍Selenium的时候说过Selenium Webdriver其实是实现了The WebDriver Wire Protocol协议,而协议其实就是一些Http相关的请求,具体信息我们可以在这查看。

下面我们通过requests来实现相同的功能,首先我们需要启动Service,这里我们可以使用Selenium Server来代替,或者我们也可以直接运行chromedriver等浏览器驱动程序。这里我使用Selenium来完成。

首先下载selenium-server-standalone-{VERSION}.jar,下载地址

然后启动

java -jar selenium-server-standalone-{VERSION}.jar

启动后控制台会给我们打印相关的服务地址

这个时候我们去浏览器访问一下这个地址: http://127.0.0.1:4444/wd/hub

我这里会被自动跳转到

我们点击Create Session,创建成功后就会发现启动了一个浏览器

其实如果您打开了chrome的检查面板,发现其实就是发送了一个Post请求,相关的信息都是同协议相同,那我们就以postman来调用这些接口看看效果。




在发送这些请求的时候,浏览器是在做相应变化的