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

Selenium WebDriverJs is unable to create a new client with iOS

本文关键字:iOS 创建 客户端 WebDriverJs Selenium      更新时间:2023-09-26

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

我已经设置了"iWebDriver"项目,就像在iPhoneDriver的wiki页面上描述的那样。我已经复制了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,就像在WebDriverJsWiki页面上描述的那样。是的,webdriver.js已经加载;(

所以我深入研究了一下,我想我有了一个解决方案。这似乎是一个破解,但对于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上运行得很好,而且我做了一些更改。不管怎样,谢谢你让我走上正轨,希望这能帮助其他人。

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

您必须手动创建一个会话,并为WebDriverJS提供会话id作为wdsidGET参数(例如urltowebdriver.html?wdsid=someID&wdurl=localhost:9000(。