使用最新版本的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/

10-13 02:24