我正在使用 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函数:给定的帖子没有说明代码是否从浏览器控制台运行。我想知道是否有任何方法可以操纵其他选项卡(本地)以单击按钮。另外:如果不可能:是否可以扩展?