Vla*_*mik 5 javascript selenium node.js
从Casper.js迁移到Selenium以获得更多工具.
尝试迭代多个链接并使用node.js和selenium-webdriver进行导航.
无法找到任何文档或示例,无论我尝试运行哪个循环,我都会收到错误.
iLinkCount = oLinks.length;
console.log( oLinks );
console.log( iLinkCount );
Run Code Online (Sandbox Code Playgroud)
上面的代码将链接计数输出到控制台,但我无法让他们的href标签继续我的测试.
driver.findElements(webdriver.By.css( 'snip' ) ).then(function( oLinks ) {
// driver.findElements(webdriver.By.xpath( "//snip" ) ).then(function( oLinks ) {
iLinkCount = oLinks.length;
console.log( oLinks );
console.log( iLinkCount );
// for( var oLink in oLinks ){
// var sLink = oLink.getAttribute('href');
// console.log( sLink );
// }
for( var i = 0; i < iLinkCount; i++ ){
var oLink = oLinks.get( i );
console.log( oLink );
// var sLink = oLinks[ i ].getAttribute('href');
// console.log( sLink );
}
});
Run Code Online (Sandbox Code Playgroud)
我试图用来迭代链接的每个循环都会出错:
TypeError:undefined不是函数
我的循环出了什么问题?
关于使用节点驱动selenium-webdriver的examples/REAL USAGE文档的任何好的参考?
经过远程搜索后,所有看似半文档的都是java/python样本.
我会说这个文档非常好.
您的代码问题是,当您查看文档时,findElements返回一个数组WebElement,并且没有get方法,我学到的一件事是,如果您打算使用seleniumjavascript,您需要理解Promise正确的概念(并确保不做任何反承诺模式),简单地说,大多数情况下你与驱动程序交谈(在其中调用一些方法),你得到的回报是有你想要的价值,而不是实际重视自己.
基于css选择器重新获取href的功能:
function getAllHrefs(driver, cssValue){
var selector;
if(!cssValue) selector = By.tagName('a');
else selector = By.css(cssValue);
return driver.findElements(selector).then(function(oLinks){
var allPromises = oLinks.map(function(oLink){
return oLink.getAttribute('href');
});
return Driver.promise.all(allPromises);
});
}
Run Code Online (Sandbox Code Playgroud)
上述功能的示例:
var dummyPage = 'http://google.com'
, Driver = require('selenium-webdriver')
, By = require('selenium-webdriver').By
, chrome = require('selenium-webdriver/chrome')
, driver
;
driver = getDriverInstance();
driver.get(dummyPage);
getAllHrefs(driver).then(function(hrefs){
console.log('got hrefs: ', hrefs.length, hrefs);
});
function getAllHrefs(driver, cssValue){
var selector;
if(!cssValue) selector = By.tagName('a');
else selector = By.css(cssValue);
return driver.findElements(selector).then(function(oLinks){
var allPromises = oLinks.map(function(oLink){
return oLink.getAttribute('href');
});
return Driver.promise.all(allPromises);
});
}
function getDriverInstance(){
var driverInstance = new Driver.Builder()
.usingServer()
.withCapabilities({
browserName: 'chrome'
})
.setChromeOptions(
new chrome.Options()
.addArguments('--privileged')
.addArguments('--no-sandbox')
)
.build();
return driverInstance;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3263 次 |
| 最近记录: |