从WebDriverJS确定会话ID

我试图在浏览器上运行WebDriverJS,但是文档在如何控制主机浏览器方面有些模糊。 在这里,它说:

启动一个浏览器来对另一个浏览器运行一个WebDrivertesting是多余的(与简单地使用节点相比)。 相反,在浏览器中使用WebDriverJS旨在自动执行实际运行脚本的浏览器。 只要服务器的URL和浏览器的会话ID是已知的,就可以完成。 尽pipe这些值可能会直接传递给构build器,但也可以使用wdurl和wdsid“环境variables”来定义这些值,这些variables是从加载页面的URL查询数据中parsing出来的:

<!-- Assuming HTML URL is /test.html?wdurl=http://localhost:4444/wd/hub&wdsid=foo1234 --> <!DOCTYPE html> <script src="webdriver.js"></script> <input id="input" type="text"/> <script> // Attaches to the server and session controlling this browser. var driver = new webdriver.Builder().build(); var input = driver.findElement(webdriver.By.tagName('input')); input.sendKeys('foo bar baz').then(function() { assertEquals('foo bar baz', document.getElementById('input').value); }); </script> 

我想从Node.js打开我的testing页面,然后运行包含在客户端脚本中的命令。 但是,我不知道如何能够提取会话ID(wdsid查询参数),当我build立会议。 有人有什么主意吗?

最后在通过WebDriverJS源代码进行了大量实验和阅读之后进行了计算。

 var webdriver = require('./assets/webdriver'); var driver = new webdriver.Builder(). usingServer('http://localhost:4444/wd/hub'). withCapabilities({ 'browserName': 'chrome', 'version': '', 'platform': 'ANY', 'javascriptEnabled': true }). build(); var testUrl = 'http://localhost:3000/test', hubUrl = 'http://localhost:4444/wd/hub', sessionId; driver.session_.then(function(sessionData) { sessionId = sessionData.id; driver.get(testUrl + '?wdurl=' + hubUrl + '&wdsid=' + sessionId); }); 

driver.session_返回一个Promise对象,在实例化时将包含会话数据和其他信息。 使用.then(callback(sessionData))将允许您按照您的意愿操作数据。