자바스크립트/puppeteer, cheerio
* puppeteer auto click : 퍼펫티어 자동 클릭
큰세상2000
2020. 11. 13. 18:17
반응형
참조사이트
<a href="/accounts/login/?source=auth_switcher" tabindex="0">로그인</a>
<div class="Igw0E IwRSH eGOV_ _4EzTm">로그인</div>
puppeteer 사용중 A 태그나 DIV 등의 태그에서 자동 클릭 이벤트 발생시키기
아직까지는 제일 확실, 원본 소스에서 약간 수정
index.js
var clickTag = require('./clickTag.js');
clickTag.clickByText('<a href="/accounts/login/?">로그인</a>', '로그인', 'a');
clickTag.delay(1000);
clickTag.js
const escapeXpathString = (str) => {
const splitedQuotes = str.replace(/'/g, `', "'", '`);
return `concat('${splitedQuotes}', '')`;
};
// puppet 딜레이
exports.delay = function delay(time) {
return new Promise(function (resolve) {
setTimeout(resolve, time);
});
};
/*
page : page
text : 문자열
element : 태그
원래 소스 수정함, element 추가
*/
exports.clickByText = async (page, text, element) => {
const escapedText = escapeXpathString(text);
const linkHandlers = await page.$x(`//${element}[contains(text(), ${escapedText})]`);
if (linkHandlers.length > 0) {
await linkHandlers[0].click();
} else {
throw new Error(`Link not found: ${text}`);
}
};
반응형