Selenium 框架原理
图片来自转载
蓝色的图Selenium Language Binding就是我们平时使用的编码语言,包括java、python、C#等。可以看到这些语言并没有直接与Browser Drivers进行通信,而是通过了JSON WireProtocol,这就是webdriver协议 ,详情请参考https://www.w3.org/TR/webdriver/ 。
简单的说他定义了一套接口规范,以我们最熟悉的点击操作为例,他对应的接口协议是:POST /session/{session id}/element/{element id}/click
这样以来,无论我们编码使用python代码来执行点击操作:
driver.find_element_by_id("").click()
还是以java代码执行点击操作:
driver.findElement(By.id("")).click();
都会通过selenium客户端的程序将click操作转化成对应的webdriver协议。这样对于Browser Drivers来说只需要解析具体协议,而无需关注客户端使用的是哪种代码了,这就是selenium支持多种语言的原理。
在Browser Drivers中可以看到各个浏览器的driver,这里我们以chromedriver为例进行讲解。在代码中直接 new ChromeDriver() 将会启动一个 ChromeDriver进程,ChromeDriver是一个独立的服务,它是 google为网站开发人员提供的自动化测试接口,它是 selenium 和chrome浏览器进行通信的桥梁。chromeDriver解析webdriver协议,然后根据解析结果,调用与之对应的Remote Debugging协议来操控chrome浏览器,它可以和浏览器内核进行交互进而操控浏览器,以上就是selenium操控chrome浏览器的原理。
以此类推,大家就会了解为什么使用selenium2和3操控不同的浏览器,需要先下载与其对应的浏览器driver了。(转载链接:https://www.jianshu.com/p/3fedd8321c75)
Selenium 环境安装
1.selenium 是第三方库,如果自动化框架是python写的(暂时以python为例),那么可以用pip 安装selenium
pip
2.安装webdriver驱动
上网找各个浏览器对应版本的webdriver驱动,下载安装,添加到环境变量中。
IE浏览器驱动_______下载地址:http://docs.seleniumhq.org/download/
Firfox浏览器驱动____下载地址:https://github.com/mozilla/geckodriver/releases
Chrome浏览器驱动__下载地址:http://chromedriver.storage.googleapis.com/index.html
Edge浏览器驱动____下载地址:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/