单击基于框架的站点上的某个 link,使用 PhantomJS

Click a certain link on frame-based site, using PhantomJS

我有一个基于框架的站点,我需要单击左侧框架(菜单)中的 link 才能在大型机中获取新内容。这可以在 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();   
     }
}

那个东西不管用=\

你必须 switch to a frame first, before you can do something in it. To actually click an element this question 有所有答案:

page.switchToChildFrame(0); // select frame by index or name
page.evaluate(function(){
    function click(el){
        // copied from 
        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 选择器一起使用。 [attribute*=value] 选择 attribute 某处包含 value.

的所有元素