Я использую Google Chrome Dev Console для выполнения этого скрипта:
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function checkbtn(btn) {
if (btn.singleNodeValue != null) {
console.log('Success!')
btn.singleNodeValue.click();
throw new Error();
} else {
console.log('button not here yet - next button');
};
}
function check() {
url = window.location.href;
var newwindow = window.open(url, 'tab2');
//sleep 250ms
await sleep(250);
var newwindow2 = window.open(url, 'tab3');
//sleep 250ms
await sleep(250);
var newwindow3 = window.open(url, 'tab4');
var loginbtn;
while (true) {
loginbtn = newwindow.document.evaluate("//*[text()='5544']/../../td[@class='action']/form/input[@type='submit' and not(@disabled)]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
console.log('trying button 1');
checkbtn(loginbtn);
loginbtn = newwindow2.document.evaluate("//*[text()='5544']/../../td[@class='action']/form/input[@type='submit' and not(@disabled)]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
console.log('trying button 2');
checkbtn(loginbtn);
loginbtn = newwindow3.document.evaluate("//*[text()='5544']/../../td[@class='action']/form/input[@type='submit' and not(@disabled)]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
console.log('trying button 3');
checkbtn(loginbtn);
};
};
Однако это приводит только к щелчку, выполняемому на активной в данный момент вкладке, в консоли которой я публикую код.Есть ли способ заставить щелчок произойти, например, на третьей вкладке, или это невозможно из-за соображений безопасности?
РЕДАКТИРОВАТЬ: Из соображений дублирования: Вызовите функцию JavaScript на вкладках браузера : Данный пост не разъясняет, запускается ли код из консоли браузера.Я хочу знать, есть ли способ манипулировать другой вкладкой (локально), чтобы нажать кнопку.Также: если невозможно: возможно ли расширение?