【发布时间】:2011-11-09 06:56:07
【问题描述】:
所以我将 Watir WebDriver 与 Firefox 和 Chrome 一起使用。 Chrome 速度要快得多,但似乎有一些怪癖。首先,在 Firefox 中,当我使用类似的东西时:
ff.link(:text, "Click Here").exists?
它工作正常。但是,在 Chrome 中,它似乎经常停止,然后以超时异常退出。所以我必须做的是像这样缩小 Chrome 中的搜索范围:
linkDiv = ch.div(:class, "mydiv")
linkDiv.link(:text, "Click Here").exists?
通常这种类型的页面缩减到只包含感兴趣的 div 标签就可以了。
但是,我在 Chrome 中注意到了另一个我在 Firefox 中没有注意到的怪癖。在 Chrome 中,我偶尔会收到错误 15 - 类似于套接字上没有响应但由于它是间歇性的,我无法随意重现错误并且尚未复制确切的文本。我还没有在 Firefox 中看到这个 - 至少现在还没有 - 但也许 Chrome 在 Firefox 隐藏它的地方给了我一个错误。
所以我希望能够在发生此错误时进行记录,到目前为止我最好的想法是使用 HTTP 代码 - 即 200、404、500 等。如果代码不是 200,则记录代码,然后重试。
Watir 有没有办法获取 HTTP 代码?从 PHP/CURL 来到 Ruby 之后,我认为会有一种简单的方法来获取 HTTP 代码 - 类似于 browser.http_code (其中 browser = Watir::Browser.new :chrome, browser.goto(...))但是我还没有找到它,我也没有运气在网上找到方法。到目前为止,我发现的“解决方案”都需要其他 gem 调用页面以获取返回的代码。但是,由于每次我收到此错误时,这些页面都可以正常工作 10 次或更多次,因此使用另一个 gem 进行另一个调用也无济于事。
谢谢
我的解决方法...
没有任何内容的间歇性页面的标题在browser.title 字符串的末尾包含“不可用”。所以我使用browser.title.include? "is not available" 检查页面是否从未加载。
这不太理想,原因有很多,例如标题可能会因站点而异,或者可能会在 Chrome 升级时发生变化。状态码 200 总是告诉我的代码有问题...
我想这是对开发人员的建议。
再次感谢
【问题讨论】:
-
如果您担心错误页面上的标题会发生变化,为什么不对其期望登陆的页面标题进行测试检查,以确保您确实到达了正确的地点。然后,如果未找到预期的标题,您可以让它将实际标题和页面文本写入某种错误日志或结果日志,和/或截屏。
-
自 1995 年以来,我一直在使用不同的语言进行编程。我曾经是一名航空工程师,有许多其他人认为我没有重复的任务。随着时间的推移,我在每项工作中的工具包都对我很有帮助。结果,我养成了将所有代码构建为尽可能通用的习惯。换句话说,我在编写此检查时的意图是,可以在我访问过的所有其他页面上使用此检查,以查看是否出现相同的错误。因此检查状态 200 - 几乎适用于我访问过的每个页面。
-
而且我认为我想访问的页面的标题比错误页面的标题更有可能发生变化。因此我检查了错误。但是,检查我要访问的页面的标题也可能允许我将某种形式的自动检查放入代码中,让我知道页面是否已更改并且我没有注意到/忘记更新 Watir 代码对于那个页面。让代码为您仔细检查可以轻松完成的事情也不错。谢谢
-
是的,一个 'arrived_at_right_page' 方法可以解决这个问题并寻找潜在的错误内容可能是一件非常有用的事情,这是我可以在我的实用程序库中看到的东西。你可以让它把标题作为一个参数,并返回找到的标题(如果有问题,连同记录一起),然后沿着 browser.arrived_ok(title).should = title 的行在验证中使用它
-
我对 Ruby 还是很陌生(实际上只使用 PHP 大约 18 个月),关于编写附加方法和覆盖我只是没有的方法有很多习惯于我以前的编码经验。我将不得不考虑编写一个简单的检查代码,我可以将其添加到 Watir 类中并在此处发布。我可以很容易地把它写成一个函数,所以任何关于如何从 Watir 将它添加到浏览器对象的指针都将不胜感激。谢谢
标签: google-chrome http-headers watir watir-webdriver