javascript - Selenium WebDriverJs 无法使用 iOS 创建新客户端

标签 javascript ios selenium selenium-webdriver

我正在尝试将 Selenium WebDriverJS 与 iOS 浏览器一起使用。不幸的是,这并不能像我需要的那样工作。

我已经设置了“iWebDriver”项目,如 iPhoneDriver wiki page 中所述。 。我已经复制了 python 脚本并且它起作用了。即使是一个小的 NodeJS 项目也能工作,但是当我尝试从浏览器运行它时,Firefox 会给出以下错误消息。

Error: Unable to create a new client for this browser. The WebDriver session ID has not been defined.

我尝试运行的代码:

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

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

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

最佳答案

所以我深入研究,我想我有一个解决方案。这看起来像是一个 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());
};

基本上,我强制它创建一个 session ,不知道为什么需要 FirefoxDomExecutor,因为经过我所做的更改,它在 Firefox 和 Chrome 上运行得很好。 无论如何,感谢您让我走上正轨,希望这对其他人有帮助。

关于javascript - Selenium WebDriverJs 无法使用 iOS 创建新客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15075816/

相关文章:

php - 如何在一页上实现多个facebook Like按钮?

javascript - Angular 1.6 - 当数组中的元素是另一个对象中的键时的 ng-if

ios - 移除 UITableView 分隔线

ios - swift 中的自定义集合 : is it a right way?

javascript - 如何在 selenium 中选择一个选项

java - Jenkins 找不到通过 Eclipse 为 selenium 项目添加的外部 Jars

javascript - 将参数传递给内联 JavaScript 函数

javascript - 从可点击列表元素切换 DIV

ios - 在 iOS 设备上模拟无服务

python - Selenium:启动 Web 驱动程序实例时引发太多 Chrome 进程