我有一个Phantom JS脚本,它监视一些外部页面。基本上,它只是从以下页面获取状态(typescript代码):
const status: string = await page.evaluate(function() { return document.getElementsByClassName("status-containing-element")[0].innerHTML; });
在某些情况下,此元素可能不会显示在站点上,然后我的脚本假设站点当前不可用。问题是,如果 包含元素的状态 类名将被更改,我的脚本将始终认为,该网站是不可用的,直到我注意到,该类名被更改。作为一种解决方案,我尝试使用phantom拍摄页面截图,并检查其中的部分以确定页面状态,但这对我来说似乎是一种开销。
除了类名之外,我建议使用 querySelector() 。通常类名可以更改,而常规页面结构保持不变。例如,考虑这样的情况:
querySelector()
document.querySelector('#container > div > div > ul > li:nth-child(2) > span > a');
还要注意,在代码中检索多个元素,然后获取第一个元素( [0] ),而 将返回单个项目。如果需要所有选择器,请使用 querySelectorAll() .
[0]
querySelectorAll()