2

我正在尝试将 Selenium WebDriverJS 与 iOS 浏览器一起使用。不幸的是,这不起作用,因为我需要这样做。

我已经按照iPhoneDriver wiki page中的描述设置了“iWebDriver”项目。我已经复制了python脚本并且它有效。即使是一个小的 nodeJS 项目也可以工作,但是当我尝试从浏览器运行它时,Firefox 给了我以下错误消息。

错误:无法为此浏览器创建新客户端。尚未定义 WebDriver 会话 ID。

我试图运行的代码:

var driver = new webdriver.Builder().
    usingServer('http://localhost:3001/wd/hub').
    withCapabilities({'browserName': 'iPhone'}).
    build();

driver.get('http://www.google.com');
driver.quit();

我已经编译了 WebDriverJs wiki page中描述的webdriverjs 。是的,webdriver.js 已加载;)

4

2 回答 2

2

所以我深入研究,我认为我有一个解决方案。这似乎是一个 hack,但对于 firefox 来说,我正在制作的 firefox 扩展到目前为止工作得非常好。

我编辑了webdriver.js文件webdriver.Builder.prototype.build

webdriver.Builder.prototype.build = function() {
  var a;
//  if(webdriver.FirefoxDomExecutor.isAvailable()) {
//    return a = new webdriver.FirefoxDomExecutor, webdriver.WebDriver.createSession(a, this.getCapabilities())
//  }
  a = new webdriver.http.CorsClient(this.getServerUrl());
  a = new webdriver.http.Executor(a);
//  if(this.getSession()) {
//    return webdriver.WebDriver.attachToSession(a, this.getSession())
//  }
//  throw Error("Unable to create a new client for this browser. The WebDriver session ID has not been defined.");
  return webdriver.WebDriver.createSession(a, this.getCapabilities());
};

基本上我强迫它创建一个会话,不知道为什么FirefoxDomExecutor需要,因为它在 Firefox 和 chrome 上工作得很好,我做了一些更改。无论如何,感谢您让我走上正轨,希望这对其他人有所帮助。

于 2013-05-09T17:36:58.187 回答
1

似乎 WebDriverJS 在不在 Node.js 中运行时无法创建新会话。

您必须手动创建一个 Session 并为 WebDriverJS 提供 session-id 作为wdsid GET-Parameter (例如urltowebdriver.html?wdsid=someID&wdurl=localhost:9000)。

于 2013-05-09T16:17:19.870 回答