5

我正在运行 webdriverjs 并遇到 webdriver 闲置并且似乎停止运行事件的问题。我正在使用 webdriver 启动一个新浏览器,然后该浏览器中的代码连接到 webdriver 会话并运行测试命令。

这似乎工作正常,但是使用一些命令序列,webdriver 就会停止。例如,在我的测试中:

driver.findElement(my_element).then(function(element) {
  console.info("found");
  element.getTagName().then(function(name) {
    console.info("got tag name", name);
  });
});

浏览器输出第一个“找到”日志行,而不是第二个“得到标签名称”。Webdriver 似乎没有失败 - 日志中没有异常,如果我在getTagNamepromise 上注册 errback,它永远不会被调用。它根本就不会发生。

webdriver 实例是一个 selenium-standalone-server。查看它的日志,我看到了第一个findElement请求:

12:59:43.382 INFO - Executing: [execute script: return (function lookupElement(id) {
  var store = document["$webdriver$"];
  if(!store) {
    return null
  }
  var element = store[id];
  if(!element || element[id] !== id) {
    return[]
  }
  return[element]
}).apply(null, arguments);, [51d37tw]] at URL: /session/1337200865492/execute)
12:59:43.393 INFO - Done: /session/1337200865492/execute

但是我从来没有看到第二个请求,所以看起来 webriver JS 永远不会最终调用服务器。

我正在逐步浏览 webdriver 代码以查看发生了什么,但是该promise框架使用了大量的闭包,并且很难有效地检查状态。有没有人熟悉这个问题?

4

1 回答 1

2

这是 WebdriverJS 中的一个错误,已由 selenium 团队确认并修复。请参阅http://code.google.com/p/selenium/issues/detail?id=3930

于 2012-05-21T21:16:04.360 回答