Update chrome.js

This commit is contained in:
Namhyeon Go 2021-12-22 16:06:50 +09:00 committed by GitHub
parent 12bace0218
commit bea0fb740d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -35,6 +35,7 @@ var ChromeObject = function() {
this.isAttached = false; this.isAttached = false;
this.pageList = []; this.pageList = [];
this.title = ""; this.title = "";
this.frameIndex = -1;
this.create = function() { this.create = function() {
this.oAutoIt = AutoItX.create().getInterface(); this.oAutoIt = AutoItX.create().getInterface();
@ -101,7 +102,11 @@ var ChromeObject = function() {
console.log("Enabled debugging port:", port); console.log("Enabled debugging port:", port);
return this; return this;
}; };
this.setFrameIndex = function(idx) {
this.frameIndex = idx;
};
this.setPageId = function(s) { this.setPageId = function(s) {
if (s == null) { if (s == null) {
var pageList = this.getPageList(); var pageList = this.getPageList();
@ -377,7 +382,15 @@ var ChromeObject = function() {
return this.evaluate('location.href = "' + url + '"'); return this.evaluate('location.href = "' + url + '"');
}; };
this.evaluate = function(expression) { this.evaluate = function(expression, frameIndex) {
var frameIndex = (typeof frameIndex !== "undefined" ? frameIndex : this.frameIndex);
if (frameIndex > -1) {
expression = 'var __getFrame=function(e){return document.getElementsByTagName("frame")[e]},__getDocument=function(){return __getFrame(' + frameIndex + ').contentDocument||__getFrame(' + frameIndex + ').contentWindow.document},__getWindow=function(){return __getFrame(' + frameIndex + ').contentWindow};' + expression;
} else {
expression = 'var __getDocument=function(){return document},__getWindow=function(){return window};' + expression;
}
try { try {
return this.sendPageRPC("Runtime.evaluate", { return this.sendPageRPC("Runtime.evaluate", {
"expression": expression "expression": expression
@ -467,7 +480,7 @@ var ChromeObject = function() {
}; };
this.getScrollHeight = function(selector) { this.getScrollHeight = function(selector) {
return parseInt(this.getEvaluatedValue('document.querySelector("' + selector + '").scrollHeight')); return parseInt(this.getEvaluatedValue('__getDocument().querySelector("' + selector + '").scrollHeight'));
}; };
this.focusWithoutActivate = function() { this.focusWithoutActivate = function() {
@ -565,7 +578,7 @@ var ChromeObject = function() {
}; };
this.getScreenPosition = function() { this.getScreenPosition = function() {
var result = this.getEvaluatedValue('(function() { return [window.screenX, window.screenY].join(","); })();'); var result = this.getEvaluatedValue('(function() { return [__getWindow().screenX, __getWindow().screenY].join(","); })();');
var pos = result.split(','); var pos = result.split(',');
return { return {
"x": parseInt(pos[0]), "x": parseInt(pos[0]),
@ -579,9 +592,9 @@ var ChromeObject = function() {
var pos = -1; var pos = -1;
if (startIndex > 0) { if (startIndex > 0) {
result = this.getEvaluatedValue('(function(k) { var rect = document.querySelectorAll("' + selector + '")[k].getBoundingClientRect(); return [parseInt(rect.left), parseInt(rect.top), parseInt(window.pageXOffset + rect.left), parseInt(window.pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height)].join(","); })(' + startIndex + ');'); result = this.getEvaluatedValue('(function(k) { var rect = __getDocument().querySelectorAll("' + selector + '")[k].getBoundingClientRect(); return [parseInt(rect.left), parseInt(rect.top), parseInt(__getWindow().pageXOffset + rect.left), parseInt(__getWindow().pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height)].join(","); })(' + startIndex + ');');
} else { } else {
result = this.getEvaluatedValue('(function() { var rect = document.querySelector("' + selector + '").getBoundingClientRect(); return [parseInt(rect.left), parseInt(rect.top), parseInt(window.pageXOffset + rect.left), parseInt(window.pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height)].join(","); })();'); result = this.getEvaluatedValue('(function() { var rect = __getDocument().querySelector("' + selector + '").getBoundingClientRect(); return [parseInt(rect.left), parseInt(rect.top), parseInt(__getWindow().pageXOffset + rect.left), parseInt(__getWindow().pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height)].join(","); })();');
} }
pos = result.split(','); pos = result.split(',');
@ -607,20 +620,20 @@ var ChromeObject = function() {
}; };
this.getElementPositionByText = function(selector, searchText) { this.getElementPositionByText = function(selector, searchText) {
var result; var result;
var pos = -1; var pos = -1;
var s = '(function() {' var s = '(function() {'
+ ' var element = Object.values(document.querySelectorAll("' + selector + '")).find(function(x) {' + ' var element = Object.values(__getDocument().querySelectorAll("' + selector + '")).find(function(x) {'
+ ' return (x.innerText.indexOf(decodeURIComponent("' + encodeURIComponent(searchText) + '")) > -1);' + ' return (x.innerText.indexOf(decodeURIComponent("' + encodeURIComponent(searchText) + '")) > -1);'
+ ' });' + ' });'
+ ' if (element) {' + ' if (element) {'
+ ' var rect = element.getBoundingClientRect();' + ' var rect = element.getBoundingClientRect();'
+ ' return [parseInt(rect.left), parseInt(rect.top), parseInt(window.pageXOffset + rect.left), parseInt(window.pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height)].join(",");' + ' return [parseInt(rect.left), parseInt(rect.top), parseInt(__getWindow().pageXOffset + rect.left), parseInt(__getWindow().pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height)].join(",");'
+ ' }' + ' }'
+ '})()' + '})()'
; ;
result = this.getEvaluatedValue(s); result = this.getEvaluatedValue(s);
pos = result.split(','); pos = result.split(',');
if (pos.length == 6) { if (pos.length == 6) {
return { return {
@ -650,7 +663,7 @@ var ChromeObject = function() {
if (searchText.indexOf(':tokenize(') == 0) { if (searchText.indexOf(':tokenize(') == 0) {
searchText = searchText.substring(searchText.indexOf('(') + 1, searchText.lastIndexOf(')')); searchText = searchText.substring(searchText.indexOf('(') + 1, searchText.lastIndexOf(')'));
s += '(function() {' s += '(function() {'
+ ' var elements = Object.values(document.querySelectorAll("' + selector + '")).filter(function(x) {' + ' var elements = Object.values(__getDocument().querySelectorAll("' + selector + '")).filter(function(x) {'
+ ' var el = x.querySelector("' + subSelector + '");' + ' var el = x.querySelector("' + subSelector + '");'
+ ' var keywords = decodeURIComponent("' + encodeURIComponent(searchText) + '").trim().split(" ");' + ' var keywords = decodeURIComponent("' + encodeURIComponent(searchText) + '").trim().split(" ");'
+ ' var text = el instanceof HTMLElement ? [el.innerText, el.getAttribute("aria-label"), el.getAttribute("class")].join(" ") : "";' + ' var text = el instanceof HTMLElement ? [el.innerText, el.getAttribute("aria-label"), el.getAttribute("class")].join(" ") : "";'
@ -661,7 +674,7 @@ var ChromeObject = function() {
+ ' var rect = element.getBoundingClientRect();' + ' var rect = element.getBoundingClientRect();'
+ ' var elClassName = "welsonjs_" + parseInt(Math.random() * 1000000000);' + ' var elClassName = "welsonjs_" + parseInt(Math.random() * 1000000000);'
+ ' element.setAttribute("class", element.getAttribute("class") + " " + elClassName);' + ' element.setAttribute("class", element.getAttribute("class") + " " + elClassName);'
+ ' return [parseInt(rect.left), parseInt(rect.top), parseInt(window.pageXOffset + rect.left), parseInt(window.pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height), "." + elClassName].join(",");' + ' return [parseInt(rect.left), parseInt(rect.top), parseInt(__getWindow().pageXOffset + rect.left), parseInt(__getWindow().pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height), "." + elClassName].join(",");'
+ ' } else {' + ' } else {'
+ ' return "";' + ' return "";'
+ ' }' + ' }'
@ -673,7 +686,7 @@ var ChromeObject = function() {
var p = parseFloat(searchText.substring(searchText.indexOf('(') + 1, searchText.lastIndexOf(')'))); var p = parseFloat(searchText.substring(searchText.indexOf('(') + 1, searchText.lastIndexOf(')')));
if (p > 0) { if (p > 0) {
s += '(function() {' s += '(function() {'
+ ' var elements = Object.values(document.querySelectorAll("' + selector + '")).filter(function(x) {' + ' var elements = Object.values(__getDocument().querySelectorAll("' + selector + '")).filter(function(x) {'
+ ' return (Math.random() < ' + p + ');' + ' return (Math.random() < ' + p + ');'
+ ' ' + (startIndex > 0 ? '}).slice(' + startIndex + ');' : '});') + ' ' + (startIndex > 0 ? '}).slice(' + startIndex + ');' : '});')
+ ' if (elements.length > 0) {' + ' if (elements.length > 0) {'
@ -681,7 +694,7 @@ var ChromeObject = function() {
+ ' var rect = element.getBoundingClientRect();' + ' var rect = element.getBoundingClientRect();'
+ ' var elClassName = "welsonjs_" + parseInt(Math.random() * 1000000000);' + ' var elClassName = "welsonjs_" + parseInt(Math.random() * 1000000000);'
+ ' element.setAttribute("class", element.getAttribute("class") + " " + elClassName);' + ' element.setAttribute("class", element.getAttribute("class") + " " + elClassName);'
+ ' return [parseInt(rect.left), parseInt(rect.top), parseInt(window.pageXOffset + rect.left), parseInt(window.pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height), "." + elClassName].join(",");' + ' return [parseInt(rect.left), parseInt(rect.top), parseInt(__getWindow().pageXOffset + rect.left), parseInt(__getWindow().pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height), "." + elClassName].join(",");'
+ ' } else {' + ' } else {'
+ ' return "";' + ' return "";'
+ ' }' + ' }'
@ -689,7 +702,7 @@ var ChromeObject = function() {
; ;
} else { } else {
s += '(function() {' s += '(function() {'
+ ' var elements = Object.values(document.querySelectorAll("' + selector + '"));' + ' var elements = Object.values(__getDocument().querySelectorAll("' + selector + '"));'
+ ' ' + (startIndex > 0 ? 'elements = elements.slice(' + startIndex + ');' : '') + ' ' + (startIndex > 0 ? 'elements = elements.slice(' + startIndex + ');' : '')
+ ' if (elements.length > 0) {' + ' if (elements.length > 0) {'
+ ' var k = Math.floor(Math.random() * elements.length);' + ' var k = Math.floor(Math.random() * elements.length);'
@ -697,7 +710,7 @@ var ChromeObject = function() {
+ ' var rect = element.getBoundingClientRect();' + ' var rect = element.getBoundingClientRect();'
+ ' var elClassName = "welsonjs_" + parseInt(Math.random() * 1000000000);' + ' var elClassName = "welsonjs_" + parseInt(Math.random() * 1000000000);'
+ ' element.setAttribute("class", element.getAttribute("class") + " " + elClassName);' + ' element.setAttribute("class", element.getAttribute("class") + " " + elClassName);'
+ ' return [parseInt(rect.left), parseInt(rect.top), parseInt(window.pageXOffset + rect.left), parseInt(window.pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height), "." + elClassName].join(",");' + ' return [parseInt(rect.left), parseInt(rect.top), parseInt(__getWindow().pageXOffset + rect.left), parseInt(__getWindow().pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height), "." + elClassName].join(",");'
+ ' } else {' + ' } else {'
+ ' return "";' + ' return "";'
+ ' }' + ' }'
@ -708,7 +721,7 @@ var ChromeObject = function() {
else { else {
s += '(function() {' s += '(function() {'
+ ' var elements = Object.values(document.querySelectorAll("' + selector + '")).filter(function(x) {' + ' var elements = Object.values(__getDocument().querySelectorAll("' + selector + '")).filter(function(x) {'
+ ' var el = x.querySelector("' + subSelector + '");' + ' var el = x.querySelector("' + subSelector + '");'
+ ' var searchText = decodeURIComponent("' + encodeURIComponent(searchText) + '").trim();' + ' var searchText = decodeURIComponent("' + encodeURIComponent(searchText) + '").trim();'
+ ' var text = el instanceof HTMLElement ? [el.innerText, el.getAttribute("aria-label"), el.getAttribute("class")].join(" ") : "";' + ' var text = el instanceof HTMLElement ? [el.innerText, el.getAttribute("aria-label"), el.getAttribute("class")].join(" ") : "";'
@ -719,7 +732,7 @@ var ChromeObject = function() {
+ ' var rect = element.getBoundingClientRect();' + ' var rect = element.getBoundingClientRect();'
+ ' var elClassName = "welsonjs_" + parseInt(Math.random() * 1000000000);' + ' var elClassName = "welsonjs_" + parseInt(Math.random() * 1000000000);'
+ ' element.setAttribute("class", element.getAttribute("class") + " " + elClassName);' + ' element.setAttribute("class", element.getAttribute("class") + " " + elClassName);'
+ ' return [parseInt(rect.left), parseInt(rect.top), parseInt(window.pageXOffset + rect.left), parseInt(window.pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height), "." + elClassName].join(",");' + ' return [parseInt(rect.left), parseInt(rect.top), parseInt(__getWindow().pageXOffset + rect.left), parseInt(__getWindow().pageYOffset + rect.top), parseInt(rect.width), parseInt(rect.height), "." + elClassName].join(",");'
+ ' } else {' + ' } else {'
+ ' return "";' + ' return "";'
+ ' }' + ' }'
@ -759,7 +772,7 @@ var ChromeObject = function() {
if (searchText.indexOf(':tokenize(') == 0) { if (searchText.indexOf(':tokenize(') == 0) {
searchText = searchText.substring(searchText.indexOf('(') + 1, searchText.lastIndexOf(')')); searchText = searchText.substring(searchText.indexOf('(') + 1, searchText.lastIndexOf(')'));
s += '(function() {' s += '(function() {'
+ ' var elements = Object.values(document.querySelectorAll("' + selector + '")).filter(function(x) {' + ' var elements = Object.values(__getDocument().querySelectorAll("' + selector + '")).filter(function(x) {'
+ ' var el = x.querySelector("' + subSelector + '");' + ' var el = x.querySelector("' + subSelector + '");'
+ ' var keywords = decodeURIComponent("' + encodeURIComponent(searchText) + '").trim().split(" ");' + ' var keywords = decodeURIComponent("' + encodeURIComponent(searchText) + '").trim().split(" ");'
+ ' var text = el instanceof HTMLElement ? [el.innerText, el.getAttribute("aria-label"), el.getAttribute("class")].join(" ") : "";' + ' var text = el instanceof HTMLElement ? [el.innerText, el.getAttribute("aria-label"), el.getAttribute("class")].join(" ") : "";'
@ -774,7 +787,7 @@ var ChromeObject = function() {
var p = parseFloat(searchText.substring(searchText.indexOf('(') + 1, searchText.lastIndexOf(')'))); var p = parseFloat(searchText.substring(searchText.indexOf('(') + 1, searchText.lastIndexOf(')')));
if (p > 0) { if (p > 0) {
s += '(function() {' s += '(function() {'
+ ' var elements = Object.values(document.querySelectorAll("' + selector + '")).filter(function(x) {' + ' var elements = Object.values(__getDocument().querySelectorAll("' + selector + '")).filter(function(x) {'
+ ' return (Math.random() < ' + p + ');' + ' return (Math.random() < ' + p + ');'
+ ' ' + (startIndex > 0 ? '}).slice(' + startIndex + ');' : '});') + ' ' + (startIndex > 0 ? '}).slice(' + startIndex + ');' : '});')
+ ' if (elements.length > 0) {' + ' if (elements.length > 0) {'
@ -784,7 +797,7 @@ var ChromeObject = function() {
; ;
} else { } else {
s += '(function() {' s += '(function() {'
+ ' var elements = Object.values(document.querySelectorAll("' + selector + '"));' + ' var elements = Object.values(__getDocument().querySelectorAll("' + selector + '"));'
+ ' ' + (startIndex > 0 ? 'elements = elements.slice(' + startIndex + ');' : '') + ' ' + (startIndex > 0 ? 'elements = elements.slice(' + startIndex + ');' : '')
+ ' if (elements.length > 0) {' + ' if (elements.length > 0) {'
+ ' var k = Math.floor(Math.random() * elements.length);' + ' var k = Math.floor(Math.random() * elements.length);'
@ -795,7 +808,7 @@ var ChromeObject = function() {
} }
} else { } else {
s += '(function() {' s += '(function() {'
+ ' var elements = Object.values(document.querySelectorAll("' + selector + '")).filter(function(x) {' + ' var elements = Object.values(__getDocument().querySelectorAll("' + selector + '")).filter(function(x) {'
+ ' var el = x.querySelector("' + subSelector + '");' + ' var el = x.querySelector("' + subSelector + '");'
+ ' var searchText = decodeURIComponent("' + encodeURIComponent(searchText) + '").trim();' + ' var searchText = decodeURIComponent("' + encodeURIComponent(searchText) + '").trim();'
+ ' var text = el instanceof HTMLElement ? [el.innerText, el.getAttribute("aria-label"), el.getAttribute("class")].join(" ") : "";' + ' var text = el instanceof HTMLElement ? [el.innerText, el.getAttribute("aria-label"), el.getAttribute("class")].join(" ") : "";'
@ -815,7 +828,7 @@ var ChromeObject = function() {
var s = ''; var s = '';
s += '(function() {' s += '(function() {'
+ ' var elements = Object.values(document.querySelectorAll("' + selector + '"));' + ' var elements = Object.values(__getDocument().querySelectorAll("' + selector + '"));'
+ ' var result = -1;' + ' var result = -1;'
+ ' for (var i = 0; i < elements.length; i++) {' + ' for (var i = 0; i < elements.length; i++) {'
+ ' if (x.querySelector("' + subSelector + '").innerText.indexOf(decodeURIComponent("' + encodeURIComponent(searchText) + '")) > -1) {' + ' if (x.querySelector("' + subSelector + '").innerText.indexOf(decodeURIComponent("' + encodeURIComponent(searchText) + '")) > -1) {'
@ -834,7 +847,7 @@ var ChromeObject = function() {
var height = 0; var height = 0;
if (this.debuggingPort > 0) { if (this.debuggingPort > 0) {
var result = this.getEvaluatedValue('(function(obj) { return Math.max(obj.scrollHeight, obj.clientHeight); })(document.querySelector("html"))'); var result = this.getEvaluatedValue('(function(obj) { return Math.max(obj.scrollHeight, obj.clientHeight); })(__getDocument().querySelector("html"))');
height = parseInt(result); height = parseInt(result);
} }
@ -881,30 +894,30 @@ var ChromeObject = function() {
}; };
this.getCurrentDomain = function() { this.getCurrentDomain = function() {
return this.getEvaluatedValue('document.domain') || ''; return this.getEvaluatedValue('__getDocument().domain') || '';
}; };
this.triggerEvent = function(eventName, selector) { this.triggerEvent = function(eventName, selector) {
if (selector.indexOf(':p(') < 0) { if (selector.indexOf(':p(') < 0) {
if (eventName == 'click') { if (eventName == 'click') {
return this.evaluate('document.querySelector("' + selector + '").click()'); return this.evaluate('__getDocument().querySelector("' + selector + '").click()');
} else { } else {
return this.evaluate('document.querySelector("' + selector + '").dispatchEvent(new Event("' + eventName + '"))'); return this.evaluate('__getDocument().querySelector("' + selector + '").dispatchEvent(new Event("' + eventName + '"))');
} }
} else { } else {
var p = parseFloat(selector.substring(selector.indexOf('(') + 1, selector.indexOf(')'))); var p = parseFloat(selector.substring(selector.indexOf('(') + 1, selector.indexOf(')')));
var _selector = selector.substring(0, selector.indexOf(':')); var _selector = selector.substring(0, selector.indexOf(':'));
if (p > 0) { if (p > 0) {
return this.evaluate('(function(obj, p) { var element = Object.values(obj).find(function() { return (Math.random() < p); }); if(element) element.click(); })(document.querySelectorAll("' + _selector + '"), ' + p + ')'); return this.evaluate('(function(obj, p) { var element = Object.values(obj).find(function() { return (Math.random() < p); }); if(element) element.click(); })(__getDocument().querySelectorAll("' + _selector + '"), ' + p + ')');
} else { } else {
return this.evaluate('(function(obj) { var elements = Object.values(obj); var element = elements[Math.floor(Math.random() * elements.length)]; if(element) element.click(); })(document.querySelectorAll("' + _selector + '"))'); return this.evaluate('(function(obj) { var elements = Object.values(obj); var element = elements[Math.floor(Math.random() * elements.length)]; if(element) element.click(); })(__getDocument().querySelectorAll("' + _selector + '"))');
} }
} }
}; };
this.triggerEventByFind = function(eventName, selector, searchText) { this.triggerEventByFind = function(eventName, selector, searchText) {
var s = '(function() {' var s = '(function() {'
+ ' var element = Object.values(document.querySelectorAll("' + selector + '")).find(function(x) {' + ' var element = Object.values(__getDocument().querySelectorAll("' + selector + '")).find(function(x) {'
+ ' return (x.innerText.indexOf(decodeURIComponent("' + encodeURIComponent(searchText) + '")) > -1);' + ' return (x.innerText.indexOf(decodeURIComponent("' + encodeURIComponent(searchText) + '")) > -1);'
+ ' });' + ' });'
+ ' if (element) {' + ' if (element) {'
@ -917,7 +930,7 @@ var ChromeObject = function() {
this.triggerEventOnNestedFind = function(eventName, selector, subSelector, searchText) { this.triggerEventOnNestedFind = function(eventName, selector, subSelector, searchText) {
var s = '(function() {' var s = '(function() {'
+ ' var element = Object.values(document.querySelectorAll("' + selector + '")).find(function(x) {' + ' var element = Object.values(__getDocument().querySelectorAll("' + selector + '")).find(function(x) {'
+ ' return (x.querySelector("' + subSelector + '").innerText.indexOf(decodeURIComponent("' + encodeURIComponent(searchText) + '")) > -1);' + ' return (x.querySelector("' + subSelector + '").innerText.indexOf(decodeURIComponent("' + encodeURIComponent(searchText) + '")) > -1);'
+ ' });' + ' });'
+ ' if (element) {' + ' if (element) {'
@ -929,25 +942,25 @@ var ChromeObject = function() {
}; };
this.scrollTo = function(x, y) { this.scrollTo = function(x, y) {
return this.evaluate('window.scrollTo(parseInt(' + x + '), parseInt(' + y + '))'); return this.evaluate('__getWindow().scrollTo(parseInt(' + x + '), parseInt(' + y + '))');
}; };
this.scrollBy = function(dx, dy) { this.scrollBy = function(dx, dy) {
return this.evaluate('window.scrollBy(parseInt(' + dx + '), parseInt(' + dy + '))'); return this.evaluate('__getWindow().scrollBy(parseInt(' + dx + '), parseInt(' + dy + '))');
}; };
this.scrollToElement = function(selector, dx, dy) { this.scrollToElement = function(selector, dx, dy) {
return this.evaluate('(function(rect, dx, dy) { window.scrollTo(rect.x + dx, rect.y + dy); })(document.querySelector("' + selector + '").getBoundingClientRect(), parseInt("' + dx + '"), parseInt("' + dy + '"))'); return this.evaluate('(function(rect, dx, dy) { __getWindow().scrollTo(rect.x + dx, rect.y + dy); })(__getDocument().querySelector("' + selector + '").getBoundingClientRect(), parseInt("' + dx + '"), parseInt("' + dy + '"))');
}; };
this.reload = function() { this.reload = function() {
//return this.sendPageRPC("Page.reload", {}); //return this.sendPageRPC("Page.reload", {});
return this.evaluate("window.reload()"); return this.evaluate("__getWindow().reload()");
}; };
this.hasClass = function(seletctor, className) { this.hasClass = function(seletctor, className) {
try { try {
var result = this.getEvaluatedValue('document.querySelector("' + seletctor + '").getAttribute("class")'); var result = this.getEvaluatedValue('__getDocument().querySelector("' + seletctor + '").getAttribute("class")');
if (typeof(result) === "string") { if (typeof(result) === "string") {
return (result.split(' ').indexOf(className) > -1); return (result.split(' ').indexOf(className) > -1);
} else { } else {
@ -959,7 +972,7 @@ var ChromeObject = function() {
}; };
this.getAttribute = function(selector, attributeName) { this.getAttribute = function(selector, attributeName) {
return this.getEvaluatedValue('document.querySelector("' + selector + '").getAttribute("' + attributeName + '")'); return this.getEvaluatedValue('__getDocument().querySelector("' + selector + '").getAttribute("' + attributeName + '")');
}; };
this.sendSpaceKey = function() { this.sendSpaceKey = function() {
@ -969,33 +982,55 @@ var ChromeObject = function() {
this.setValue = function(selector, value, repeat, searchIndex) { this.setValue = function(selector, value, repeat, searchIndex) {
var s = encodeURIComponent(value), var s = encodeURIComponent(value),
i = 0, i = 0,
searchIndex = (typeof searchIndex !== "undefined" ? searchIndex : 0) searchIndex = (typeof searchIndex !== "undefined" ? searchIndex : 0),
repeat = (typeof repeat !== "undefined" ? repeat : 1)
; ;
while (i < repeat) { while (i < repeat) {
if (searchIndex > 0) { if (searchIndex > 0) {
this.evaluate('Object.values(document.querySelectorAll("' + selector + '"))[' + searchIndex + '].value = decodeURIComponent("' + s + '");'); this.evaluate('Object.values(__getDocument().querySelectorAll("' + selector + '"))[' + searchIndex + '].value = decodeURIComponent("' + s + '");');
} else { } else {
this.evaluate('document.querySelector("' + selector + '").value = decodeURIComponent("' + s + '")'); this.evaluate('__getDocument().querySelector("' + selector + '").value = decodeURIComponent("' + s + '")');
} }
i++; i++;
} }
}; };
this.getText = function(selector) { this.getText = function(selector) {
return this.getEvaluatedValue('document.querySelector("' + selector + '").innerText'); return this.getEvaluatedValue('__getDocument().querySelector("' + selector + '").innerText');
};
this.setHTML = function(selector, value, repeat, searchIndex) {
var s = encodeURIComponent(value),
i = 0,
searchIndex = (typeof searchIndex !== "undefined" ? searchIndex : 0),
repeat = (typeof repeat !== "undefined" ? repeat : 1)
;
while (i < repeat) {
if (searchIndex > 0) {
this.evaluate('Object.values(__getDocument().querySelectorAll("' + selector + '"))[' + searchIndex + '].value = decodeURIComponent("' + s + '");');
} else {
this.evaluate('__getDocument().querySelector("' + selector + '").innerHTML = decodeURIComponent("' + s + '")');
}
i++;
}
};
this.getHTML = function(selector) {
return this.getEvaluatedValue('__getDocument().querySelector("' + selector + '").innerHTML');
}; };
this.traceMouseClick = function() { this.traceMouseClick = function() {
return this.evaluate('window.addEventListener("click",function(e){var t=e.clientX,n=e.clientY,l=document.createElement("div");l.style.position="absolute",l.style.width="20px",l.style.height="20px",l.style.backgroundColor="#00ff00",l.style.zIndex=99999,l.style.top=window.pageYOffset+n-10+"px",l.style.left=window.pageXOffset+t-10+"px",document.body.appendChild(l)});'); return this.evaluate('__getWindow().addEventListener("click",function(e){var t=e.clientX,n=e.clientY,l=__getDocument().createElement("div");l.style.position="absolute",l.style.width="20px",l.style.height="20px",l.style.backgroundColor="#00ff00",l.style.zIndex=99999,l.style.top=__getWindow().pageYOffset+n-10+"px",l.style.left=__getWindow().pageXOffset+t-10+"px",__getDocument().body.appendChild(l)});');
}; };
this.getWindowInnerHeight = function() { this.getWindowInnerHeight = function() {
return parseInt(this.getEvaluatedValue('window.innerHeight')); return parseInt(this.getEvaluatedValue('__getWindow().innerHeight'));
}; };
this.getDocumentScrollTop = function() { this.getDocumentScrollTop = function() {
return parseInt(this.getEvaluatedValue('document.documentElement.scrollTop')); return parseInt(this.getEvaluatedValue('__getDocument().documentElement.scrollTop'));
}; };
// formula: y > 0 and y + h < ih // formula: y > 0 and y + h < ih