【Web测试】关于Open Browser的那些坑

自动化测试工具Robot Framework(简称RF)可以支持端口测试、web测试、数据库测试、集成自动化测试等。在常用的web测试中,我们编写用例的第一条就是用浏览器打开指定的url界面,所用到的关键字就是:Open Browser。但是就是这么一个简单的关键字,在使用过程中却会遇到各种奇怪的报错,本文将详细介绍我曾经踩过的坑,以及怎么越坑。

Open Browser关键字是来自Selenium2Library库,所以首先settings里需要加上Selenium2Library库,然后编写用例的第一句,如下:
运行用例,报错如下:
“Geckodriver executable need to be in PATH”引起这个报错的原因可能有两个:第一,你本地已经下载了火狐浏览器的驱动Geckodriver,但是没有把该驱动文件的路径添加到系统变量中;第二,那就是你压根本地就没有下载过Geckodriver驱动。

  1. Geckodriver的下载路径:https://github.com/mozilla/geckodriver/releases
  2. 下载好后,解压geckodriver.exe压缩包,将解压后的.exe文件放置在C:\python34或者C:\python27,具体放置在哪个路径下,要看你RF使用的是python2.7版本还是3.4版本,使用哪个版本放置在对应路径下。
  3. 桌面计算机图标右键“属性”—“高级系统设置”— 环境变量 — 系统变量处查找Path变量 — 编辑添加路径C:\python34或者C:\python27。
  4. 还需要将使用的火狐浏览器的安装路径也放到path变量里。

按照上述修改后,再次运行用例,火狐浏览器打开了,但是链接url并没有获取到,又报错:KeyError : sessionId,如下:

然后又百度了下Sessionid的产生由来,浏览器第一次访问服务器时,会在服务器端产生一个Session,每一个Session有一个Sessionid和其对应。在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Sessionid;当客户端再次发送请求的时候,会将这个Sessionid带上,服务器接受到请求之后就会依据Sessionid找到相应的Session,从而再次使用之。那这个log报错应该就是产生的Session id浏览器端就没有收到,而RF中控制浏览器操作的就是selenium,试着在cmd中使用命令pip install -U selenium 更新selenium到最新,再次执行用例,用例执行成功
总结上述,关键字Open Browser除过语法错误外,其他的报错基本都是浏览器和driver或者selenium组件之间版本高低不一致导致的。大家有使用RF的,可以参考。


发表评论