在Mac OS X上使用Selenium进行测试时,如何强制Firefox成为前台应用程序
How to force Firefox to be the foreground application when testing with Selenium on Mac OS X
我们最近开始使用Selenium测试基于django的应用程序。测试在Linux上运行得很好,但在Mac OS x上有些失败。我们在两种情况下都使用Firefox作为浏览器,我们花了一些时间(运气不错)才弄清楚这两种情况之间的重要区别在于FF是作为前台应用程序运行还是作为后台窗口运行。下面是Linux上的情况:
- Selenium告诉Firefox转到用户注册页面。
- Selenium填充用户名和无效的电子邮件地址。 Selenium将焦点从电子邮件地址字段更改为同一页面上的另一个字段(它恰好是搜索框,但这并不重要-所有重要的是焦点更改事件)。
- web页面中的Javascript验证码注意到邮件地址无效,并在页面中插入错误消息。
- Selenium检测到错误消息并将测试标记为通过。
当我们在Mac OS X上运行时,然而,步骤#4不会发生,除非我们在测试运行时手动将Firefox窗口置于前台—如果我们将其留在后台(这是默认情况下它出现的地方),浏览器中的Javascript不会获得焦点更改事件,因此错误消息永远不会插入页面的DOM中,因此Selenium超时等待它,并且测试失败。
我们可以强制Selenium在测试运行时前台浏览器,以便我们的Javascript将获得我们想要的事件吗?如果有,怎么做?
Selenium通过Javascript驱动浏览器。没有办法通过JS控制浏览器窗口。一般来说,在Selenium中测试"onfocus"answers"onblur"事件是非常困难的。
你可以尝试在输入无效的电子邮件地址后,使用Selenium的'runScript'或'getEval'方法进行JS评估,从而自己触发此事件。这不是"纯粹的"黑盒测试,也就是说,如果验证的实现发生了变化,你的测试就需要改变,但这是执行该测试的最可行的方法。
相关文章:
- 强制模板刷新ember.js
- 为什么这在IE中的工作方式与在Firefox中不同
- 通过php页面中的js强制下载txt
- JS可以在Chrome中工作,但不能在Firefox中工作
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- createElement("a") - FireFox JavaScript
- Firefox:从网页强制全屏模式
- 在页面加载后强制重绘/重绘 Firefox 中的 DOM 元素
- D3 仅在 Firefox 中使用断点时才呈现强制布局
- 在Firefox中强制将焦点设置回内容可编辑文档
- 强制仅限数字的js函数不'不适用于Firefox,但适用于Chrome;IE运行良好
- 使用附加的javascript强制日期格式文本框在FireFox中不起作用
- 如何强制google chrome/firefox使用Internet explorer web浏览器控件
- 在Mac OS X上使用Selenium进行测试时,如何强制Firefox成为前台应用程序
- 使用JavaScript强制FireFox使用background-position-y
- 如何强制Firefox (Version 6)释放内存
- Firefox强制gc在文件上传后清理文件链接,减少内存消耗
- 如何强制chrome不重新加载图像与相同的url,直到页面刷新,像firefox
- 强制浏览器在chrome, firefox上打印背景图像
- Firefox:强制地址栏全部大写