๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Tried. Failed. Logged.
๐Ÿ–ฅ๏ธํ”„๋ก ํŠธ์—”๋“œ/HTML | CSS | JAVASCRIPT

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ - XPath ๋‹ค๋ฃจ๊ธฐ, ๋ฐ˜์‘์†๋„ ํ…Œ์ŠคํŠธ ์‚ฌ์ดํŠธ ํ•ต ๋งŒ๋“ค๊ธฐ

by Janger 2023. 6. 23.
728x90

 

 

XPath ์„ ํƒ์ž์ธ $x๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ, setInterval ํ•จ์ˆ˜ ๋‚ด์— $x ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด 

VM3146:2 Uncaught ReferenceError: $x is not defined
    at <anonymous>:2:12

์ด๋ผ๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค. 

 

๊ทธ๋ž˜์„œ evaluate ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด XPath ํ‘œํ˜„์‹์œผ๋กœ ํŠน์ • ์š”์†Œ๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์„ ๋Œ€์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

evaluate ํ•จ์ˆ˜ ๊ตฌ๋ฌธ
evaluate(xpathExpression, contextNode, namespaceResolver, resultType, result)

 

๋งค๊ฐœ ๋ณ€์ˆ˜

xpathExpression - XPath ํ‘œํ˜„์‹์ด ์˜จ๋‹ค. 

contextNode - document ๊ฐ™์€ context ๋…ธ๋“œ๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค. 

resultType - ๊ฒฐ๊ณผ ์œ ํ˜•์— ๋งž๋Š” XPathResult๋ฅผ ๋ฐ˜ํ™˜

 

 

 

๋ฐ˜์‘์†๋„ ํ…Œ์ŠคํŠธ ์‚ฌ์ดํŠธ ํ•ต ๋งŒ๋“ค๊ธฐ

 

evaluate ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ฐ˜์‘์†๋„ ํ…Œ์ŠคํŠธ ์‚ฌ์ดํŠธ ํ•ต์„ ๋งŒ๋“ค์—ˆ๋‹ค. setInterval ํ•จ์ˆ˜๋กœ 0.001์ดˆ(1ms)๋งˆ๋‹ค "ํด๋ฆญํ•ด์ฃผ์„ธ์š”"๋ผ๋Š” ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด ๋งŒ์•ฝ ์žˆ๋‹ค๋ฉด .reaction-click์„ ํด๋ฆญํ•œ๋‹ค. 

 

setInterval(()=>{
    if(document.evaluate('//*[text()="ํด๋ฆญํ•ด์ฃผ์„ธ์š”"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue)
        document.querySelector('.reaction-click').click()
}, 1 )

 

 

 

์ฐธ๊ณ : 

https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate

 

Document: evaluate() method - Web APIs | MDN

The evaluate() method of the Document interface selects elements based on the XPath expression given in parameters.

developer.mozilla.org

https://wonyoung2.tistory.com/843

 

[Javascript] XPath ์ด์šฉํ•˜๊ธฐ

Javascript์—์„œ XPath๋ฅผ ์ด์šฉ ํŠน์ • Element๋ฅผ ์ฐพ์„๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. var xpath = "//a" var element = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; ## XPathResult - ANY_TY

wonyoung2.tistory.com

 

728x90