学习了论坛里各位大佬写的ahk操作网页代码,实操时发现存在一些问题。
问题描述:请求网页时可以根据document.readyState状态是否为complete来判断网页元素是否加载成功。但是如果点击页面的按钮(这个过程中存在接口调用等逻辑),然后页面发生了变化,后续想要点击新出现的按钮时,无法判断新的按钮元素是什么时候加载出来的。
我是个小白,想了半天想到了一个笨方法,在此分享给大家。
解决方案:通过异常处理来过滤掉异常信息,循环执行,直到执行完毕。具体代码如下:
loop{
try{
; 尝试执行的代码.
PageInst.Evaluate("document.getElementsByClassName('这里填写按钮的class值')[0].click();")
break
}
catch e {
} ; 处理由上面区块产生的首个错误/异常.
}
运行逻辑:如果页面没有出现这个按钮,那么PageInst.Evaluate(“document.getElementsByClassName(‘bar-user-info-row bar-mission-action’)[0].click();”)这一句就会报错,通过异常处理过滤掉当前异常,继续执行下一次循环,知道页面出现这个按钮,点击的代码正常执行,后续的break也将正常执行结束循环,从而实现了按钮出现然后点击的操作。