我正在node.js中编写一个应用程序,该应用程序将导航到网站,单击网站上的按钮,然后从网站中提取某些数据。除单击按钮方面外,其他一切都进行顺利。我似乎无法模拟按钮单击。我对此非常陌生,因此,我对您提出的任何建议将不胜感激!可悲的是,我搜寻了互联网,以寻找解决此问题的方法,但找不到。
我已经在使用'request'和'cheerio'的.js文件中使用了.click()
和.bind('click, ...)
。
我还尝试在使用“ chrome-launcher”,“ chrome-remote-interface”和“ puppeteer”的其他.js文件中使用page.click()
和page.evaluate()
。
这是我的“ request”和“ cheerio”文件代码:
const request = require('request');
const cheerio = require('cheerio');
let p1 = {}, p2 = {}, p3 = {}, p4 = {}, p5 = {};
p1.name = 'TheJackal666';
p2.name = 'Naether Raviel';
p3.name = 'qman37';
p4.name = 'ranger51';
p5.name = 'fernanda12x';
const team = {1: p1, 2: p2, 3: p3, 4: p4, 5: p5};
for(var x in team){
let url = 'https://na.op.gg/summoner/userName=' +
team[x].name;
request(url, (error, response, html) => {
if (!error && response.statusCode == 200) {
const $ = cheerio.load(html);
$('.SummonerRefreshButton.Button.SemiRound.Blue').click();
//FIXME: MAKE A FUNCTION THAT SUCCESSFULLY "CLICKS" UPDATE BUTTON
team[x].overallWR = $('.winratio');
team[x].overallWR =
team[x].overallWR.text().match(/\d/g);
team[x].overallWR =
team[x].overallWR.join("");
console.log(team[x].overallWR);
}
});
}
我希望可以成功单击任何页面上的更新按钮(页面上有一个部分说明上次更新的时间),而不会出现错误。就那样,我要么得到一个错误,即:
"$(...).click is not a function"
或者(如果我将该行合并到外部函数中),则不会出错,但不会有结果。
非常感谢您提供的任何帮助!
最佳答案
参见the documentation:
Cheerio不是网络浏览器
Cheerio解析标记,并提供一个用于遍历/操纵结果数据结构的API。它不像Web浏览器那样解释结果。具体来说,它不会产生视觉效果,也不会应用CSS,加载外部资源或执行JavaScript。如果您的用例需要任何此功能,则应考虑使用PhantomJS或JSm之类的项目。
关于javascript - 如何修复Node/Cheerio中的'$(….click不是函数)',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56675374/