【发布时间】:2013-05-10 01:36:58
【问题描述】:
我正在尝试将 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();
我已经编译了 the WebDriverJs wiki page 中描述的 webdriverjs。是的,webdriver.js 已加载;)
【问题讨论】:
-
你有没有想过这个问题?我遇到了完全相同的错误。
-
不幸的是,webdriverJS(在浏览器中,而不是 node.js 中)似乎无法自行创建新会话。因此,您必须手动创建一个会话并在执行时将会话 ID 传递给 webdriverJS。我已经编辑了 webdriverJS 以满足我的需要。查看the comment in this listing 以了解如何访问现有会话。基本上,他们使用 GET 参数“wdurl”(主机 URL)和“wdsid”(会话 ID)。希望这会有所帮助:)
-
老鼠,这使事情变得非常复杂,我正在制作一个 FF fox 扩展程序,出于复杂的原因,我需要用它来控制一个 IE 浏览器。当我看到 selenium 可以由 JavaScript 控制时,我非常兴奋。但这无疑使我的风帆失去了动力。
-
使用您的 webdriverjs 模块,您是否编写了代码来创建新会话?
-
我只是在 webdriver-code 之外创建了一个新会话。如果您不想创建新会话,您可能希望使用 POST-Data
{"desiredCapabilities":{"browserName":"yourbrowser"}}(可能更多)和标头{"Accept":"application/json; charset=utf-8"}}向/session发送请求。响应将是对yourselenium:port/someStuff/YOUR-SESSION-ID的重定向响应。根据您触发请求的方式,您将被重定向并获得 JSON 编码的响应,或者您必须从该重定向 url 中提取会话 ID ;)
标签: javascript ios selenium selenium-webdriver