- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我开发了一个脚本,其唯一目的是检查网站/服务是否已启动并运行。它的做法是,它使用 url 连接到页面并使用用户凭据登录到站点。如果登录成功则服务运行正常。
该脚本是用 Java 编写的并使用 HTMLUnit。我的问题就在这里。如何确保登录后返回的HTML页面(填写表单后点击登录/登录按钮)是登录后的“帐户主页”。换句话说,我如何确定登录操作是否成功。
这就是我现在正在做的事情。帐户页面通常有一些用户相关信息。例如,如果我登录雅虎邮件,页面右上角将显示“欢迎,用户名”,或者页面上将始终显示“撰写”或“收件箱”。我正在使用这个逻辑来测试是否成功。
这是我在测试此脚本时的观察结果。我遇到过这条规则失效的案例。
有时登录后返回的页面是错误页面,要求您
检查您输入的凭据。
有时返回的页面可能会要求您打开 JavaScript 或
在您的浏览器中启用 cookie。
我遇到过一个情况,服务器返回的页面已经被相同的预登录页面(没有解释原因)
某些网页本质上是动态的,因此内容会发生变化时。在这种情况下,关键字搜索可能会导致错误
否定。这就是为什么搜索字符串是否存在的逻辑铰链
纯粹取决于“搜索字符串/关键字”的选择。
我想要表达的观点是,预先为这些情况进行编码是不现实的。
我尝试比较登录前和登录后页面的网址,但发现了
有很多情况两者是相同的。因此,即使这种方法也不是结论性的。
我需要一种确定的方法来确定登录是否成功。我不是专业的网络开发人员。服务器是否会在新页面中返回任何可以解析的状态代码? HTMLUnit 是否有一定的能力来测试成功和失败。
感谢您的帮助/评论。谢谢!
最佳答案
嗯...这是一个棘手的问题。这是因为您无法控制服务器。如果您要求 A,您可能会收到 A,但您应该准备好收到 B、C 和 D...并且您可能会错过 E。
I need a sure shot way of determining if the login was successful.
根据您的评论,查找“Welcome
现在,您提到过在某些情况下您尝试登录但没有收到该字符串。在这些情况下,根据您的示例,您几乎应该始终不登录。
但是,正如您所说,他们可以将该字符串从“欢迎,<用户名>”更改为“你又来了!”你会得到假阴性结果。然而,应用这种逻辑不太可能出现误报。
那么,有什么方法可以 100% 成功猜测用户是否登录,并且 100% 成功猜测用户是否未登录呢?不,没有。理解这一点的最简单方法是以类似人类的方式使用网络:
场景1:
场景 2:
场景 3:
场景 4:
这些只是一些场景,但还有更多。现在想一想:即使是人类大脑也不能 100% 确定登录试验的结果……我们怎么能期望 headless 浏览器能做到这一点呢? :)
关于java - HTMLUnit : Determine if the "login" was successful,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18499889/
问题:假设我们有一个名为success 的C++ 字符串。 &success 和 success& 有什么区别? 这题是我期中复习的,我理解&success是获取对象的地址。但我不确定 success
我正在阅读 gearman 代码的手册页( http://manpages.ubuntu.com/manpages/precise/man3/gearman_success.3.html )。他们有两
在 Angular 中,[class]="'success'" 和 class="success" 有区别吗? 例如: ... 或 ... 如果同时使用 IIUC 后者会导致替换前者,所以我想更好
当我查看日志文件时 D:\SAS\XXX\Lev1\SASMain\BatchServer\Logs 我看到了这两行 NOTE: Libref TESTLIB successfully assigne
我正在努力完成这项工作: $http.post('/route/path', {'username': $scope.threadedUsers[currentIndex].name}). s
我正在尝试设置协议(protocol)来处理我的 javascript 函数中的成功和错误,但是当函数成功时它似乎并不合作。我收到以下错误: Failed with: TypeError: Objec
在 typescript 中,我有一个 DataAccess 类,以便所有 Ajax 调用都通过单个对象进行路由,以节省应用程序中许多地方的代码重复。 在使用这种方法时,我需要使用回调将响应返回到调用
我已经用 Spring Security 3.0.2 实现了一个登录-注销系统,一切都很好,但是对于这一点:在我添加了一个带有 invalid-session-url 属性的 session 管理标签
运行命令pip install rpy2会导致以下输出和错误消息:。我按照另一篇Stackoverflow帖子上的说明卸载并重新安装了R和相关目录,但得到了相同的错误。我还尝试安装以前版本的rpy2,
我最近在项目的测试目标中添加了一个新的单元测试,当我点击产品 > 测试时,Xcode 说“测试成功”。我相当确定测试应该失败,因为被测试的方法尚未实现。我在测试中添加了一个断点,但从未到达过;测试仍然
我正在编写一个程序来创建一个AD帐户并启用Exchange邮箱,并且从中得到一些奇怪的行为。 首先,尽管它成功创建了AD用户,但由于“找不到MyPath/先生示例”,因此无法启用邮箱。我认为这是由于A
在cd_deployer_conf文件中我们设置了Cleanup="false,这样传输包在发布后不会被删除,但是我们可以看到单个发布操作有3个不同的包喜欢 tcm_0-264891-66560.CO
我正在使用 $().each() 循环访问一些项目。我想确保这段脚本之后的操作仅在 each() 完成时执行。 示例: $('something').each(function() { // do
我正在尝试创建一个 ping 洪水程序,它将目标 IP 地址和广播 IP 地址作为参数。该程序将向广播地址发送 icmp echo 数据包,并将受害者的 IP 地址作为源。网络上所有收到数据包的主机都
我正在实现一个虚拟 LTE EPC 设置,其模块 (HSS) 之一需要 mysql 数据库。创建后,我必须运行该模块,但收到屏幕截图 1 中所示的错误。附:我对这个东西很陌生 最佳答案 您必须修改您的
#include #include #include #include #include #include #include #include #include void error(cha
我的基本代码如下, fd = open("test.file", O_RDONLY); if (read(fd, &tempch, 1) < 1) { perror("F
更新 :这似乎是在 Pipeline: Declarative 中引入的错误插件版本 1.3.5 - 降级到 1.3.4.1解决了这个问题。票证创建于: https://issues.jenkins-
我最近在 jQuery 网站上看到了弃用通知。 Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete()
我假设调用 status.success() 会终止后台作业。但是,当我运行它时,我仍然看到第二条日志消息: Parse.Cloud.job("Tester", function (request,
我是一名优秀的程序员,十分优秀!