Как настроить Selenium (WebDriver и Server) с привязками PHP

Я пытаюсь найти конкретную информацию о том, как настроить Selenium с привязками PHP к типу установки "клиент-сервер". Я даже не уверен, что то, что я хочу, возможно, но я постараюсь сделать все возможное, чтобы описать цель того, чего я пытаюсь достичь.

Я делаю QA в проекте веб-разработки, где мы работаем с распределенными членами команды. Нам необходимо автоматическое тестирование переднего конца и решили, что (из-за ряда факторов) Selenium является лучшим кандидатом на работу. Наша команда специализируется на PHP, поэтому имеет смысл использовать Selenium с привязками PHP.

Моя самая большая проблема:

1) Как установить эти привязки PHP?

2) Как создать и выполнить Selenium script в PHP? Это может показаться очевидным, но мне нужно знать, нужно ли мне создавать какой-то "проект" в PHP, или это требует разных шагов. Руководства очень ясны и детализированы, когда речь идет о привязках JAVA по умолчанию, но безнадежно не хватает на привязку PHP.

3) Как мне сделать все это, желая вызвать тест у клиента, но выполнив его "сервером/виртуальной машиной"? (Помня о том, что, если бы такая возможность была там, я также хотел бы иметь возможность создавать тесты на сервере, которые могут выполнять/вызывать тестовые действия на рабочем столе клиента.)

4) Как настроить сервер, который отвечает всем требованиям для запуска Selenium Server с привязками PHP?

Цель состоит в том, чтобы иметь возможность первоначально создать виртуальную машину (вероятно, поле для бродяг), которая будет содержать Selenium Server (и, если необходимо, другие компоненты), с фактическими тестовыми сценариями, которые могут совместно использоваться членами команды. Эта виртуальная машина должна иметь возможность выполнять тесты без головок, но в идеале должна также быть способна проводить тесты на хосте (если это вообще возможно).

Технически он должен поддерживать сценарий, в котором QA обнаруживает проблему в продукте, и должен иметь возможность просто указать требуемый script для его воспроизведения. Разработчику, у которого есть задача исправить проблему, нужно только запустить script на своем компьютере, чтобы фактически воспроизвести найденную ошибку.

В конце концов, мы захотим перенести виртуальную машину на фактический сервер, поэтому мы хотим, чтобы это было с самого начала. Это упростит ситуацию, когда мы сможем перейти на физический сервер.

Я смотрю по всему Интернету для подробной документации, но практически в любой документации сделаны многие предположения о уже настроенных и настроенных средах. Мне действительно нужно пошаговое объяснение того, как настроить вещи.

PHPUnit кажется немного странным выбором для пары с Selenium, так как оба они покрывают совершенно разные области тестирования. Я видел (еще неполные) инструкции на сайте PHPUnit, но это кажется очень неуклюжим, и наша команда разработчиков не очень увлекается этой настройкой. У нас есть люди, предлагающие Дженкинса, но я лично не вижу, как Дженкинс устранит нормальную установку Селена, которую все равно нужно пройти с самого начала.

У меня уже есть Selenium Server, работающий как служба в VM, мне просто нужно знать, что мне еще нужно, и как мне нужно его настроить, как его настроить. как сделать общение и т.д.

Любая помощь/идеи будут высоко оценены.

Ответ 1

Чтобы выполнить эту операцию локально, следуйте инструкциям здесь:

https://github.com/facebook/php-webdriver#getting-started

Вот пример PHP webdriver script, который вы можете использовать. Он откроет firefox, переберет вас на страницу google и отправьте поисковый запрос:

    // you'll need to modify this path so it points to the composer autoloader
    require_once __DIR__ . '/vendor/autoload.php';

    /**
     * since I'm running the selenium jar locally, this is all I need.
     * I just run it in the background and my PHP скриптs connect to it and
     * the tests
     */ 
    $host = 'http://localhost:4444/wd/hub';

    $driver = RemoteWebDriver::create($host, DesiredCapabilities::firefox());

    $driver->get('http://google.com');
    $element = $driver->findElement(WebDriverBy::name('q'));
    $element->sendKeys('Cheese');
    $element->submit();

Является ли это той деталью, которую вы ищете?