LINUX.ORG.RU

phantomjs page.click()

 


0

1

Подскажите как ввести данные в форму и нажать на кнопку submit в phantomjs а потом получить результат POST'а. Например в туториале описано как загрузить страницу:

page.open(url, function (status) {
  console.log(page.content);
  phantom.exit();
});

Но если я делаю так:

page.open(url, function (status) {
  page.evaluate(function () {
    document.getElementById("#username").value = myUsername;
    document.getElementById("#password").value = myPassword;
    document.getElementById("#submit_btn").click();
  });
});

Как в этом случае указать callback после click() что бы получить страницу после залогивания?


Не знаю, как нормально, но я лепил таймаут на две секунды и работало.

sholom
()
Ответ на: комментарий от iluha16

А что там читать?

$ /usr/bin/phantomjs --help |grep -i webdriver

Там будет ключик, его надо будет использовать во время запуска
фантома.

Затем берешь любой ЯП для которого есть библиотека
для работы с webdriver, всё.
http://www.seleniumhq.org/download/ «Selenium Client & WebDriver Language Bindings».

Вот простой пример для php:
https://github.com/facebook/php-webdriver/blob/community/example.php

theanonymous
()

а как phantomjs поймет что текущая страница - это страница после залогинивания? Чем она отличается от незалогиненной страницы по мнению phantomjs? Тебе нужно самому реализовать функцию, которая будет определять что страница - залогиненная и вызывать эту проверку периодически пока страница не примет вид, который тебе нужен, например как-то так:

page.evaluate(function () {
  document.getElementById("#submit_btn").click();
});

var id = setInterval(function() {
  var loggedIn = page.evaluate(function() {
    return !!document.getElementId("элемент-который-есть-только-на-залогиненной-странице");
  });

  if (loggedIn) {
    clearInterval(id);
    // дальше идет логика с авторизованной страницей
  }
}, 2000);

Еще можно использовать casperjs, где есть удобные хелперы для всяких click-ов и прочих проверок.

Goganchic ★★
()
Ответ на: комментарий от theanonymous

всё равно странно не указать в документации самого главного. по мнению писателя этой документации phantomjs видимо может быть использован исключительно что бы загрузить страницу через page.open и выйти.

iluha16
() автор топика
Ответ на: комментарий от iluha16

И такое может быть.

Используй chromedriver + chromium + webdriver, это должно работать стабильнее.

theanonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.