Selenium3.x源码分析,作为技术人员进阶不得不看

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

源码

这是一个令人深畏窟窿,作为深耕编码多年的测试,也常常对其他有兴趣编码的同学讲,只要自己有了代码基础,一定一定要去看看人家优秀框架的源码,一是对自己掌握代码能力的检验,二是训练思维。

能够胜任自动化测试工程师的岗位,必然有一定的代码基础,那么对于阅读源码,应该不难。但是要理解别人的思维,这就不那么容易了。

selenium

Selenium是什么? Selenium自动化浏览器。就是这样!你如何运用这种力量完全取决于你自己。它主要用于自动化web应用程序以进行测试,但当然不限于此。无聊的基于web的管理任务也可以(而且应该)自动化。Selenium得到一些最大的浏览器供应商的支持,这些供应商已经(或正在)采取步骤使Selenium成为他们浏览器的本地部分。它也是无数其他浏览器自动化工具、api和框架中的核心技术。

为什么要选择selenium学习?

我粗鄙的认为,这是非常容易领你引入自动化测试领域的‘捷径’;而学习selenium更是能让人迅速成长且容易树立正确的自动化测试技术思维。

首先要做的几件事

鄙人习惯性使用python,当然java也不是不可以。主要考虑读者的接收能力,因为python是比较容易入门的编程语言。

搭建本地开发环境
  • python3环境

不建议使用python2,也不要问为什么,再问就要python4了。

  • IDE编辑器

初学建议Pycharm,觉得自己很行了,就选择eclipse,说的就是作者本人了[狗头],主要是作者还要使用eclipse写java脚本。

  • selenium3安装

pip install selenium=3.14.0

# 最新版已经到selenium4了,再没有使用到其新特性的时候,不要最新版本,避免出了问题没有能力解决

  • driver浏览器驱动

咱们是讲源码,可以不用,但是需要一定的演示效果,就满足条件吧

selenium目录

image.png

顶级两个目录:common和webdriver:

椭圆圈出的common定义在web自动化测试过程中可能出现的异常,最常见可能就属NoSuchElementException了

那么webdriver下面一大堆方框圈出的是跟浏览器相关,如主流的chrome、ie、firefox等,表示工具能支持运行不同的浏览器,所以也可以得知selenium可以用来做浏览器兼容性测试。

剩下的三个是:webdriver/common、webdriver/remote、webdriver/support;

  • common 定义了webdriver的操作浏览器支持的基本功能:

如键盘+鼠标按键操作,有actions、touch_actions、keys

image.png

- remote 定义了webdriver的核心功能:是主要的源码分析对象

image.png

  • support 定义了webdriver的辅助功能

常说的显示等待就是expected_conditions定义的

image.png

写在最后

在没有代码基础之前,不建议着急去看源码,而是需要扎实自己的代码基础,不要急于求成。

在分析源码的时候,会特别提点在实际运用中可能会遇到的问题,甚至是奇葩问题。共勉!!!