LINUX.ORG.RU

Тесты с Selenium 3 под Linux

 ,


0

2

Я что-то уже изрядно устал пытаться это настроить. Хоть у кого-нибудь получалось?

Суть в том, что есть виртуалка под CentOS 7, есть firefox, Xvfb и все-все-все. При этом непонятно, как в принципе запустить тест на каком-нибудь perl или php под это всё хозяйство.

Настраивал так: http://chandrewz.github.io/blog/selenium-on-centos

Код на Perl такой:

use strict;
use warnings;
use 5.16.1;
use utf8;

use WWW::Selenium;

    my $sel = WWW::Selenium->new( host => "localhost",
                                  port => 4444,
                                  browser => "*firefox",
                                  browser_url => "http://intranet-site.com",
                                );

    $sel->start;
    $sel->open("http://intranet-site.com");
    $sel->type("q", "hello world");
    $sel->click("btnG");
    $sel->wait_for_page_to_load(5000);
    print $sel->get_title;
    $sel->stop;

В результате выполнения теста получаю HTML-страницу, говорящую мне о том, что «нечто пошло не так» - без малейших уточнений на тему того, что именно не так.

Захожу на http://my-server:4444/wd/hub , пытаюсь «Create session» -> (выбор браузера) Firefox

selenim-server-3.0.1 в консоли сообщает мне «красивыми» exception'ами, что geckodriver не установлен и даже даёт ссылку на github, откуда это чудо ставить.

Теперь проблема: во-первых, в статье http://chandrewz.github.io/blog/selenium-on-centos ничего про какой-то geckodriver не написано. Во-вторых я распаковываю geckodriver, захожу в src/ - а там что-то совершенно непонятное, и как это использовать - одним разработчикам известно наверное (ну, может, ещё здесь кто в курсе).

Я в недоумении... Готов писать не обязательно на Perl'е, можно на PHP, суть не в этом. Суть в том, что из документации по Selenium вообще непонятно, «how to get started» в моём случае. Очень много буков, очень много совершенно меня не касающегося текста - и нет простого мануала, как сделать так, чтобы это заработало не на Windows и при этом клиентский код был не на Java :(

Жесть просто. Помогите разобраться, пожалуйста!

P.S. Ошибка в виде портянки из HTML при запуске моего куска кода:

Error requesting http://localhost:4444/selenium-server/driver/:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="/assets/displayhelpservlet.css" media="all"/>
  <script src="/assets/jquery-1.6.1.min.js" type="text/javascript"></script>
  <script src="/assets/displayhelpservlet.js" type="text/javascript"></script>
  <script type="text/javascript">
    var json = Object.freeze('{"version":"3.0.1","type":"Standalone","consoleLink":"/wd/hub"}');
  </script>
</head>
<body>

<div id="content">
  <div id="help-heading">
    <h1><span id="logo"></span></h1>
    <h2>Selenium <span class="se-type"></span>&nbsp;v.<span class="se-version"></span></h2>
  </div>

  <div id="content-body">
    <p>
      Whoops! The URL specified routes to this help page.
    </p>
    <p>
      For more information about Selenium <span class="se-type"></span> please see the
      <a class="se-docs">docs</a> and/or visit the <a class="se-wiki">wiki</a>.
      <span id="console-item">
        Or perhaps you are looking for the Selenium <span class="se-type"></span> <a class="se-console">console</a>.
      </span>
    </p>
    <p>
      Happy Testing!
    </p>
  </div>

  <div>
    <footer id="help-footer">
      Selenium is made possible through the efforts of our open source community, contributions from
      these <a href="https://github.com/SeleniumHQ/selenium/blob/master/AUTHORS">people</a>, and our
      <a href="http://www.seleniumhq.org/sponsors/">sponsors</a>.
   </footer>
  </div>
 </div>

</body>
</html>
★★★★★

вебдрайвер на перле? вот это извращение... его даже на пыхе вроде до сих пор официально не признали... но честно, я 3й еще не ковырял, а надо бы.

Lordwind ★★★★★ ()

Почему не Selenium::Remote::Driver ? У меня с ним проблем не возникало. Правда работал я с ним с год назад и селениум-сервер был второй версии.

IPFreely ★★ ()

https://github.com/gempesaw/Selenium-Remote-Driver#usage

Сервак не нужен же, если браузер на том же хосте. Ставь geckodriver.

Хотя я бы посоветовал попробовать и хром. В последний раз год-два назад тыкал, он пошустрее огнелиса тесты гонял.

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

Да, спасибо всем, разобрался: сервер действительно ни к чему, мне пригодился драйвер Selenium::Firefox - он фактически сам всё делает, хотя бинарник geckodriver всё-таки нужен (вы не поверите, но это исходно программа на языке Rust!) - тем не менее, собирать его скриптом build.sh не только бесполезно, но и вредно: на сайте mozilla есть уже собранные бинарники, у меня вот сейчас версия 1.14

Ещё раз спасибо всем за поддержку!

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

хотя бинарник geckodriver всё-таки нужен

А для чего он нужен?

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

Это так называемый marionette. Он стартует firefox в каком-то особом режиме, позволяющем управлять им удалённо и запрещающем создавать блокирующие окна, ну и дальше биндиться на порт и слушает команды: «пусть firefox откроет страницу такую-то и в элемент input с классом таким-то» - в таком духе. Поэтому и разработка самой Mozilla: никто, кроме них, не знает досконально, как их браузер устроен.

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

Ах. Всё, я увидел. На сколько я понял это для FF новее 47 версии. Просто у меня 43, которая запускается без этой приблуды.

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