2015-02-17 5 views
0

У меня есть сайт на основе фрейма, и мне нужно щелкнуть ссылку в левом фрейме (меню) для получения нового контента в мэйнфрейме. Можно ли это делать в 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(); 
    } 
} 

Этот материал не работает = \

+0

В чем проблема? Вы не знаете, как нажать PhantomJS или вы не знаете, как найти кнопку, которую нужно нажать? –

+0

Собственно, оба. Никакие методы, которые я знаю, чтобы найти ссылки на странице, не работают. Часть кода javascript, который я опубликовал, не работает. Это провал на первом шаге. – user3416803

ответ

1

Вы должны switch to a frame первым, прежде чем вы можете сделать что-то в нем. Для того, чтобы на самом деле щелкните элемент this question имеет ответы на все вопросы:

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-селектора атрибутов. [attribute*=value] выбирает все элементы, где attribute где-то содержит value.

+0

Я очень благодарен за ваши решения. Вы действительно разбираетесь в советах. Большое спасибо, еще раз! – user3416803

Смежные вопросы