单击基于框架的站点上的某个 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
.
的所有元素
我有一个基于框架的站点,我需要单击左侧框架(菜单)中的 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
.