Cla*_*ung 6 javascript selenium webdriver node.js
我正在尝试在浏览器上运行WebDriverJS,但文档在如何控制主机浏览器方面有点模糊.在这里,它说:
启动浏览器以针对另一个浏览器运行WebDriver测试有点多余(与简单地使用节点相比).相反,在浏览器中使用WebDriverJS旨在自动化实际运行脚本的浏览器.只要知道服务器的URL和浏览器的会话ID,就可以实现这一点.虽然这些值可以直接传递给构建器,但也可以使用wdurl和wdsid"环境变量"定义它们,这些变量从加载页面的URL查询数据中解析:
<!-- 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>
Run Code Online (Sandbox Code Playgroud)
我想从Node.js打开我的测试页面,然后运行客户端脚本中包含的命令.但是,我不知道在构建会话时如何能够提取会话ID(wdsid查询参数).有谁有想法吗?
最后经过大量实验和阅读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);
});
Run Code Online (Sandbox Code Playgroud)
driver.session_返回一个Promise对象,该对象将在实例化时包含会话数据和其他信息.使用.then(callback(sessionData))将允许您根据需要操作数据.
归档时间: |
|
查看次数: |
2023 次 |
最近记录: |