底层原理如下:
1.在自动化测试过程中,存在三部分组件:客户端脚本+驱动+浏览器终端。
2.驱动文件,以geckodriver.exe为例,这个可执行的驱动文件启动后,相当于一个暴露了一系列接口的服务器,监听某一端口,例如:89890。
3.客户端的操作(访问页面,定位元素,输入数据,点击按钮等)都是封装成了接口请求(eg:/session/xx/yy),然后提交到驱动服务器。
4.驱动服务器接收到客户端的请求后,再跟终端浏览器交互。
5.终端浏览器做出相应操作。
下图描述了整个交互过程:
以定位元素为例,定位搜索框,我们来看底下这行代码在执行的时候底层到底经历了些什么:
WebElement searchInputBox = driver.findElement(By.id("js_keyword"));
实际,底层请求时,每个请求会被封装为一个command,然后根据不同的commannd封装得到不同的HttpRequest对象:
根据此命令,得到接口地址:
拿到此接口地址封装为一个HttpRequest请求。
client.execute(httpRequest,true),执行接口调用: