使用PhantomJS点击基于框架的网站上的某个链接



我有一个基于框架的网站,我需要单击左侧框架(菜单)中的链接,以便在大型机中获取新内容。这可以在phantomjs中实现吗?算法是什么?非常感谢。

var frame = document.getElementsByTagName('frame')[2];
var links = frame.contentDocument.document.getElementsByTagName('a');
for(var l = 0; l < links.length; l++){
     if(links[l].href.indexOf("home") > -1)
     {
       alert(links[l].href);
       //links[l].click();   
     }
}

这些东西不起作用=\

你必须先切换到一个框架,然后才能在其中做一些事情。要真正点击一个元素,这个问题有所有的答案:

page.switchToChildFrame(0); // select frame by index or name
page.evaluate(function(){
    function click(el){
        // copied from https://stackoverflow.com/a/15948355
        var ev = document.createEvent("MouseEvent");
        ev.initMouseEvent(
            "click",
            true /* bubble */, true /* cancelable */,
            window, null,
            0, 0, 0, 0, /* coordinates */
            false, false, false, false, /* modifier keys */
            0 /*left*/, null
        );
        el.dispatchEvent(ev);
    }
    click(document.querySelector('a[href*="home"]'));
});
// switch back when you're done
page.switchToParentFrame();

如图所示。你不需要迭代元素就可以点击它。适当地使用querySelector和属性CSS选择器。CCD_ 2选择其CCD_ 3某处包含CCD_ 4的所有元素。

最新更新