gpt4 book ai didi

javascript - 在 querySelectorAll 的选择器中使用变量

转载 作者:行者123 更新时间:2023-11-29 15:32:20 25 4
gpt4 key购买 nike

我正在使用 Nightwatch 编写一个单元测试脚本,我正在尝试遍历页面上多个子元素中包含的任何“a”标记。我正在尝试使用 querySelectorAll 来获取每个子项中“a”标签的数量,但是当我向选择器引入迭代变量时,该语句似乎不起作用。

在 for 循环中调用以下函数,并传递 x 变量:

browser.execute(function() {
return document.querySelectorAll("div.field-item.even *:not(a):nth-child(" + x + ") a").length;
},
function(links){
a_total = links.value;
console.log("a total: " + links.value);
});

此上下文中的 x 变量应为 1,但这是代码返回的值,无论 x 等于什么:

a total: [object Object]

我不确定为什么它应该返回一个数字而返回一个对象。如果我将 x 变量换成静态数字,它似乎也能正常工作。例如,

return document.querySelectorAll("div.field-item.even *:not(a):nth-child(1) a").length;

给我以下内容:

a total: 2

我不确定为什么选择器会返回一个对象。我认为选择器只是一个字符串。为什么当我将变量放入选择器字符串时它似乎不起作用?

最佳答案

看起来问题是因为我没有将 x 传递给 .execute 函数。我找到了一个 GitHub topic on the issue .

下面的代码似乎可以工作:

browser.execute(function(x) {
return document.querySelectorAll("div.field-item.even *:not(a):nth-child(" + x + ") a").length;
}, [x],
function(links){
console.log("a total: " + links.value);
});

关于javascript - 在 querySelectorAll 的选择器中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com