2014-11-17 3 views
1

У меня есть iframe на моей странице, которая появляется, чтобы пользователь мог вставить некоторые данные на родительскую страницу. Когда пользователь нажимает кнопку «Добавить» в фрейме, он вызывает родительскую функцию, чтобы закрыть фрейм и вставить данные.CasperJS Закрытие iframe/Scripting parent from iframe

Casper может найти кнопку «Добавить» в кадре, но когда я нажимаю на нее, ничего не происходит. Честно говоря, я делаю это правильно. Возможно, ошибка/не поддерживается Phantom?

Код:

casper.withFrame(0,function() { 
    this.waitForSelector('.button[name="add button"]'); 
}); 

casper.withFrame(0,function() { 
    this.click('.button[name="add button"]'); 
}); 

casper.wait(1000); 

casper.then(function() { 
    this.capture('capture.png'); 
}); 

capture.png показывает кадр все еще открыт, но если я выполняю действие себя в Chrome, рамка закрывается правильно.

+0

Пожалуйста, зарегистрируйтесь на ['resource.error'] (http://docs.casperjs.org/en/latest/events-filters.html#resource-error), [' casper.page.onResourceTimeout'] (http://phantomjs.org/api/webpage/handler/on-resource-timeout.html), ['remote.message'] (http://docs.casperjs.org/en/latest/events-filters.html # remote-message) и ['page.error'] (http://docs.casperjs.org/ru/latest/events-filters.html#page-error) события. Возможно, есть ошибки. –

+0

Ошибки с вышеуказанным кодом отсутствуют. Единственное, что не так, так это то, что мой JS, который закрывает фрейм, кажется, не выполняется, когда кнопка нажата через casper. – bluemoonballoon

+0

Вы пытались запустить его с помощью '--web-security = false'? –

ответ

0

Почему бы вам не добавить this.click('.button[name="add button"]'); в обратном вызове this.waitForSelector('.button[name="add button"]');?

Таким образом, вы будете уверены, что клик был вызван после того, как была найдена кнопка.