我正在尝试将 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/