一、问题背景
当我们在Tasks面板中下载数据时,需要挨个点击【RUN】按钮进行下载,当条目很多时,挨个下载的话就很费事费时,为此实现批量下载方法。
二、技术思路
按照挨个下载的思路,我们首先点击【RUN】,在弹窗中继续点击【RUN】按钮即可完成下载,按照这个思路,我们只需要找到这个按钮,让其自动点击,即可完成自动化下载
由于是在浏览器中操作,那我们可以在控制台中,用代码直接操作DOM,实现模拟点击。我们只需要解决怎么找到网页中的【RUN】按钮和执行点击事件,步骤如下:
(1)从DOM中获取【RUN】元素
(2)执行点击事件click
三、实现方法
实现打开控制台,我用的是谷歌浏览器,可以用快捷键shift + ctrl + i 开素打开,也可以点击鼠标右键找到“检查”选项进入控制台。
在控制台是可以直接使用Javascript代码
通过这个思路我们可以通过代码找到【RUN】按钮,给予选择器实现,我们查看Elements,通过查找发现【RUN】按钮都在id为task-pane的面板中,而【RUN】的Class为“run-button”,根据这两个属性我们可以定位到所有的【RUN】按钮。
在控制台数据JS代码。得到以下结果
document.getElementById("task-pane").shadowRoot.querySelectorAll(".run-button");
让其执行点击,运行如下代码,会发现已经点击了【RUN】并且弹出n个窗口
let runBtns = document.getElementById("task-pane").shadowRoot.querySelectorAll(".run-button");
for(let i=0; i<runBtns.length; i++)
{
runBtns[i].click();
}
下一步,我们在执行弹窗里的【RUN】,运用如上同样方法,找到弹窗里的【RUN】按钮,然后执行
let taskDialog = document.querySelectorAll("ee-image-config-dialog");
for(let i=0; i<taskDialog.length; i++)
{
taskDialog[i].shadowRoot.querySelector("ee-dialog").shadowRoot.querySelector("paper-dialog").querySelector(".ok-button").click();
}
三、完整代码
当我们运行完成自己的代码后运行出结果后,打开控制台,直接输入以下代码即可。
let runBtns = document.getElementById("task-pane").shadowRoot.querySelectorAll(".run-button");
for(let i=0; i<runBtns.length; i++)
{
runBtns[i].click();
}
执行完以上代码,出现弹出
let taskDialog = document.querySelectorAll("ee-image-config-dialog");
for(let i=0; i<taskDialog.length; i++)
{
taskDialog[i].shadowRoot.querySelector("ee-dialog").shadowRoot.querySelector("paper-dialog").querySelector(".ok-button").click();
}
执行完以上代码,即可批量下载,你需要做的事情就是【等待~~~~】