我开发了一个脚本,其唯一目的是检查网站/服务是否正常运行。它的方式是,它使用其URL连接到页面并使用用户凭据登录到站点。如果登录成功,则服务正常运行。
此脚本是用Java编写的,并使用HTMLUnit。这就是我的问题。 如何确保登录后返回的HTML页面(填写表单后单击登录/登录按钮)是登录后的“帐户主页”。换句话说,我如何确定登录操作是否成功。
以下是我现在正在做的事情。帐户页面通常包含一些用户相关信息。例如,如果我登录到雅虎邮件,它将在页面的右上角有“欢迎,用户名”或页面上总是有“撰写”或“收件箱”。我正在使用这种逻辑来测试成功。
这是我在测试此脚本时的观察结果。我遇到过这个规则崩溃的情况。
有些时候,登录后返回的页面是一个错误页面,要求您使用 检查您输入的凭据。
有时返回的页面可能会要求您打开您的javascript或
在浏览器中启用cookie。
我遇到过服务器返回页面的情况 相同的登录前页面(没有解释原因)
有些网页本质上是动态的,因此内容会发生变化 时。在这种情况下,关键词搜索可能导致错误 这就是为什么这种搜索字符串存在的逻辑取决于 纯粹是选择“搜索字符串/关键字”。
我想说的是,预先编写这些案例是不现实的。
我尝试比较登录前和登录后页面的网址但发现了 有很多情况都是相同的。即使这种方法也没有定论。
我需要一种确定登录是否成功的确定方法。我不是一个专业的网络开发人员。服务器是否返回具有新页面的任何状态代码,可以解决? HTMLUnit是否具备测试成功和失败的能力。
感谢您的帮助/评论。谢谢!
答案 0 :(得分:1)
嗯......这是一个棘手的问题。这是因为您无法控制服务器。我问你A你可能会收到A但是你应该准备接受B,C和D ......你可能会错过E。
我需要一种确定登录是否成功的确定方法。
根据您的评论,查找“欢迎<用户名>”字符串应该是相当肯定的射击。在其他(更多程序化的)单词中,如果您在结果页面中有该字符串,那么您就已登录。确实无误。
现在,您已经提到过在某些情况下您尝试登录并且您没有收到该字符串。在这些情况下,根据您的示例,您几乎总是不应该登录。
但是,正如您所说,他们可以从“欢迎,<用户名>”更改该字符串到“你又来了!”你将得到假阴性。但是,你不可能在应用这种逻辑时得到误报。
那么,有没有办法在猜测用户是否登录时100%成功,并且在猜测用户是否未登录时也能100%成功?不,没有。理解这一点的最简单方法是以类似人的方式使用网络:
情景1:
情景2:
情景3:
情景4:
这些只是一些场景,但还有更多。现在想一想:即使是人头也不能100%确定登录试用的结果......我们怎么能期望无头浏览器? :)