3

目前,我正在使用specflow,selenium,fluent automation和xunit的组合来测试我的浏览器应用程序在Chrome浏览器的部署实例上。这在开发人员计算机上运行良好,但经常在构建服务器代理程序上失败,除非构建服务器代理程序很慢,否则没有明显的原因。我可以使用phantom.js来测试JavaScript重度应用程序吗?

我一直都在phantom.js documentation我很努力去理解,如果我可以使用phantom.js来完全测试我的应用程序。

我的应用程序有很多javascript逻辑,我使用requirejs来加载我所有的模块,我想知道我是否可以使用phantom的无头浏览器功能来测试它的所有功能。它会下载所有的JavaScript文件,然后让我对dom执行操作,例如启动其中包含表单的模式?很多UI都是用淘汰模板构建的。

我已经做了一些搜索,但没有确定性出现。有没有人对此有任何建议?在这一点上,我对浏览器测试并没有太在意,我们为此提供了手动QA。这只是为了通过所有用户故事的ui自动化功能失败的快乐路径早期预警系统。


在这一切结束时,我做了一些改动这是真正有用的

  • 访问硒驱动程序和检查jQuery.active
  • 创建一个新的expectOne/assertOne它抛出,如果css选择器为选择器返回多个项目
+1

您可以提供关于您在构建代理上使用FluentAutomation时遇到的问题的任何细节。我很想看看它并尝试提供帮助。大多数情况下,这个问题与浏览器未被启动/清理或测试未在UI会话中运行有关,这可能会导致一些问题。 – stirno

回答

7

PhantomJs是一个完整的浏览器实现,只是不呈现给屏幕(我吨确实有一个缓冲区,可以通过截图捕获)。如果手动测试涵盖了首选浏览器,并且您只需要知道严重故障,那就试试吧!

FluentAutomation.SeleniumWebDriver在当前版本中支持PhantomJs开箱即用。只需选择PhantomJs作为您的“浏览器”,它就可以工作。 FluentAutomation.PhantomJs提供程序已弃用,将消失。

FluentAutomation.SeleniumWebDriver.Bootstrap(FluentAutomation.SeleniumWebDriver.Browser.PhantomJs); 
3

是的。

您可能会发现CasperJS更适用于测试。内置的测试仪模块非常易于使用。 Casper还使用SlimerJS(用于Gecko/Firefox测试)打开,不需要额外的代码。

在Phantom或Casper中您可以使用page.evaluate()来运行任何客户端JavaScript,因此应该没问题。

+0

我们使用phantomjs/casperjs每天早上在我们的js应用程序上运行一些测试。我们模拟复杂的工作流程,并在每一步之后进行截图。所以我们可以看到出了什么问题。但是2件事情:1.你必须编码每一步 - 这不是一个典型的QA任务,2.它不能代替单元测试 - 但单元测试也可以在幻影中运行;看到chutzpah ... – Andreas

+0

@Andreas同意这两点。为了更容易创建测试,您可以使用FireBug。例如。我输入的这个非常评论栏的CSS选择器是'html body.question-page div。容器div#content div div#mainbar div#answers div#answer-20261132.answer table tbody tr td div#comments-20261132.comments table tfoot tr td.comment-form form#add-comment-20261132 table tbody tr td textarea' ! –

+0

考虑到他已经在使用封装PhantomJS的Fluent Automation @Stelrno的答案可能是一种可行的方法。这需要重新编写他的整个测试套件,而stirno的答案只是一个改变。 – pauljz

相关问题