使用最新版本的Web驱动程序和nightwatchjs。
使用下面的代码,我在getTags中什么也没得到。
如果我在以下范围内设置断点:
browser.elementIdText(element, function (result) {
gotTags.push(result.value);
console.log(result.value);
});
它永不中断。
我知道查询有效并返回10个元素:
document.querySelector('iframe[src="about:blank"]').contentDocument.querySelectorAll('.gtm-debug-tags-fired-container .gtm-debug-tags-card-title')
编码:
browser
.url(config.url)
.waitForElementPresent('body', 5000)
.waitForElementPresent('iframe[src="about:blank"]', 10000)
.execute(function(){
return document.querySelector('iframe[src="about:blank"]').contentDocument.querySelectorAll('.gtm-debug-tags-fired-container .gtm-debug-tags-card-title')
}, function(elems){
var element;
for (var i = 0; i < elems.value.length; i++) {
element = elems.value[i].ELEMENT;
browser.elementIdText(element, function (result) {
gotTags.push(result.value);
console.log(result.value);
});
}
最佳答案
文档http://nightwatchjs.org/api#execute说,您缺少第二个(或当前的第三个)参数。
function(elems){
var element;
for (var i = 0; i < elems.value.length; i++) {
element = elems.value[i].ELEMENT;
browser.elementIdText(element, function (result) {
gotTags.push(result.value);
console.log(result.value);
});
}
这部分必须是第三个参数,因为第二个是第一个参数中函数的args参数。
所以,我认为它一定像
.execute(function(){
return document.querySelector('iframe[src="about:blank"]').contentDocument.querySelectorAll('.gtm-debug-tags-fired-container .gtm-debug-tags-card-title')
}, [], function(elems){ // added [] here as second parameter
var element;
for (var i = 0; i < elems.value.length; i++) {
element = elems.value[i].ELEMENT;
browser.elementIdText(element, function (result) {
gotTags.push(result.value);
console.log(result.value);
});
}
关于javascript - 使用Nightwatchjs无法从网页获取值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38226043/