Javascript代码不会单击手风琴的每个元素

Javascript代码不会单击手风琴的每个元素,javascript,Javascript,我正在尝试编写一个脚本,找到手风琴的每个部分并单击它,在代码运行后,我将进行刮取。但是,我在点击每个部分时都遇到了问题,只有少数人做了,或者只有在最后一个元素上才能完成所有的点击 网址是: 我使用的代码是: var elements_accordion = document.querySelectorAll('[data-bind="text: priceRange"]'); for(var i = 0; i < elements_accordion.length;i+

我正在尝试编写一个脚本,找到手风琴的每个部分并单击它,在代码运行后,我将进行刮取。但是,我在点击每个部分时都遇到了问题,只有少数人做了,或者只有在最后一个元素上才能完成所有的点击

网址是:

我使用的代码是:

var elements_accordion = document.querySelectorAll('[data-bind="text: priceRange"]');
for(var i = 0; i < elements_accordion.length;i++) 
{
    async function output_print(i) 
    {
        await elements_accordion[i].click(); 
        await console.log("Doing number: "+i); 
    } 
    async function timeOutFn(i) { await setTimeout(output_print, 50000, i); }
    timeOutFn(i);    
}
var elements\u accordion=document.queryselectoral('[data bind=“text:priceRange”]');
对于(变量i=0;i
此外,如果我在控制台中输入:elements\u accordion[1]。click()它会执行我想要的操作,但在进入for循环时不会执行。我认为这是一个异步问题,但它只是偶尔100%工作

任何帮助都会很好。

  • console.log
    上使用async/await逻辑没有意义,
    单击
    ,然后执行
    设置超时
    功能,因为这些功能不可用 回报承诺。 下面是使用适当的
    sleepFn
    函数返回承诺的工作示例
const accordion_elements=document.queryselectoral('tr.hidden-tn.hidden-xs');
const sleepFn=ms=>newpromise((res)=>setTimeout(()=>res(),ms));
accordion_elements.forEach(异步函数(项){
等待睡眠fn(1000);
项目。单击()
}
);
试试这个

var moreInfoElements = document.getElementsByClassName("more-info");
var timeDelay = 4000;

x=0;
while(x<moreInfoElements.length) {
    setTimeout(clickMe,timeDelay*x,moreInfoElements[x],x);
    x++;
}

function clickMe(elemToClick,num) {
    console.log("clicking "+(num+1)+" out of "+moreInfoElements.length);
    elemToClick.click();
}
var moreInfoElements=document.getElementsByClassName(“更多信息”);
var时间延迟=4000;
x=0;

虽然(X首先,我建议您不要使用for loop,而是forEach,不要在其中创建函数,而是在外部创建函数,然后在内部使用for loop。其次,如果我查看您的页面,我可以看到例如:
From£1695
似乎它的打印价格范围是文本,而不是变量值。Oops。看起来我需要更多的时间来获取这一个是正确的。谢谢。我非常感谢!但是,它仍然没有单击每个元素。看起来循环只是在有网络呼叫时停止。当我们在加载页面后第一次单击accordion时,浏览器会发出网络请求以加载数据。但是,如果您先单击所有accordion,然后运行您r代码工作正常。我注意到,如果我手动点击它们并运行它们,它就工作了……我还注意到,如果我单独给它们打电话,它们也工作了,这就是为什么我认为我需要一个时间延迟来完成这项工作。我对此感到非常沮丧。我还注意到网站最初产生了一个错误:拒绝从“”执行脚本,因为其MIME类型(“”)不可执行,并且启用了严格的MIME类型检查。“我想知道这是否与此有关?这正是我想要的。在对性能进行了一些调整后,它就可以工作了。这很奇怪,因为它的逻辑与我的几个变体非常相似,但是while循环和setTimeout不知怎的对你起了作用。。。