使用自定义引用头的python selenium测试referer

百度快排 litianseo 8个月前 (06-11) 142次浏览 已收录 0个评论

使用自定义引用头的 python selenium 测试

有时,当用户来自不同的来源/搜索引擎时,网站需要有不同的行为。在我的用例中,我们的网站必须设置一个跟踪 cookie,它对于来自 grom google、aol、yahoo 或 msn 的用户具有不同的值。我必须测试所有情况下曲奇的设置是否正确。

当我开始编写测试用例时,我发现在 Selenium 中没有“正式的”方法来添加自定义请求头。实际上,这是团队明确拒绝实现的功能:

https://code.google.com/p/selenium/issues/detail?ID=2047 年

解决这个问题的两种可能方法是:

在 firefox 中创建 2 个测试配置文件,并使用自定义引用配置其中一个配置文件,例如使用 refcontrol 扩展名。在单元测试中动态选择配置文件。

使用代理服务器拦截正在发送的请求,并插入自定义头。

首先,这些选项需要用户手动干预,因此很难分发它。您必须向运行测试的人员解释如何执行所有这些操作,而不只是安装所需的包并运行它。

当前项目实现第二个选项。

虽然这种方法不是新的,但我找不到任何完整的解决方案。所以我希望这能帮助别人。

包括什么

代理服务器的实现,该服务器向拦截的请求添加所需的 referer 头:

推荐人\u proxy.py

从 unittest.testcase 继承的基本测试类,以及一个具有用于使用 webdriver 的帮助方法的模块。firefox(打开、关闭、导航到页面、读取 cookie 等):

以“proxy.py”为基础的“u”

实用程序.py

两个示例实现:

测试推荐人

测试参考者

所需的 python 包列表:

要求.txt

运行测试的配置文件:

鼻.cfg

发生什么事?

每次测试:

使用所需的头参数启动代理服务器。

创建 webdriver.firefox 的一个实例,用于指向所有请求的这个代理。

使用驱动程序实例运行测试。

停止代理服务器。

在这个例子中,我使用 www.facebook.com 作为我的“测试中的站点”。这是因为 Facebook 实现了相同的功能,即根据引用头设置不同的跟踪 cookie 值。引用头值存储在一个名为 Reg_Ext_Ref 的 cookie 中。

准备环境

或者,您可以为此项目创建一个虚拟的 Python 环境。这不是必需的,但建议这样做。

例如,我想在../venvs/selenium referer 中创建一个环境:

$virtualenv../venvs/selenium 引用

$source../venvs/selenium referer/bin/activate/激活

现在,虚拟环境的 python 将用于安装更多的包。

安装程序包

此解决方案正在使用 libmproxy 实现代理服务器。libmproxy 是 mitmproxy 项目的一部分(http://mitmproxy.org/)。

首先,安装 Mitmproxy 的 Ubuntu 软件包要求:

$sudo apt get 安装 python pip python dev libffi dev libssl dev libxml2 dev libxslt1 dev

然后,安装所需的 python 包:

$pip 安装-r requirements.txt

如果您在 Ubuntu 以外的平台上,请使用 Mitmproxy 文档页面中的说明。

在 OS X 上,您应该已经安装了 openssl,因此只需运行:

$pip 安装-r requirements.txt

运行测试

要么使用 pycharm 的 nice 测试运行程序,要么从命令行运行测试:

$nosetests–config=nose.cfg

提供 config 以列出需要运行的测试。

手动运行代理

为了确保代理可以由测试运行,您只需激活虚拟环境并从命令行运行它,例如:

$python referer_proxy.py–引用 http://www.boo.com–端口 8888

如果输出为“正在运行…”,则一切正常。可以使用 ctrl+c 停止服务器。

文件下载:https://github.com/j-bennet/selenium-referer


32w.net , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:http://www.32w.net/baidukuaipai/301.html
使用自定义引用头的python selenium测试referer
喜欢 (0)
[576801182@qq.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址