반응형

참조사이트


<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}`);
	}
};
반응형