Pergunta

Alguém sabe como usar o Selenium 2 com Phpunit?Existe alguma amostra do Selenium 2 em PHP?

Foi útil?

Solução

Rápida atualização: Phpunit agora suporta o selênio 2


No momento da redação deste artigo, a phpunit não suporta o selênio 2.

php-webdriver a partir de o Facebook Permite que a API completa do WebDriver seja chamada do PHP de maneira elegante. Citar:

A maioria dos clientes exige que você leia primeiro o protocolo para ver o que é possível e depois estuda o próprio cliente para ver como chamá -lo. Isso espera eliminar o último passo.

É usado iniciando o servidor Selenium 2, que fornece a interface em localhost:4444/wd/hub.

/usr/bin/java -jar /path/to/selenium-server-standalone-2.7.0.jar

Em seguida, executando o código de teste PHP, que chama essa interface. Por exemplo:

<?php

require '/path/to/php-webdriver/__init__.php';

$webdriver = new WebDriver();

$session = $webdriver->session('opera', array());
$session->open("http://example.com");
$button = $session->element('id', 'my_button_id');
$button->click();
$session->close();

o API da Webdriver é mapeado para os métodos PHP, compare a chamada click sobre element No exemplo, com a chamada da API do elemento/clique na documentação.

O código de teste pode ser envolvido em testes regulares de phpunit.

Este não é o suporte a phpunit nativo, mas é uma abordagem bastante robusta.

Outras dicas

Por favor, olhe para o http://code.google.com/p/php-webdriver-bindings/ . Esta é a biblioteca PHP que se comunica com o Selenium WebDriver Server usando o JSONWireProtocol. Esta é a versão inicial, mas funciona.

Atualmente (2017) eu recomendo usar php-webdriver, o que o AFAIK mais apresenta a Language PHP completa para interagir com o Selenium WebDriver.

Esta biblioteca foi reescrita em 2014 para apoiar o Selenium 2 e sua API é baseada principalmente nas ligações oficiais do Webriver Java. Isso significa que você também pode aproveitar os exemplos de código escritos em Java, pois eles geralmente podem ser simplesmente seguidos no PHP. Também é escrito de maneira moderna e segue namespaces padrão do PSR-4 e também padrões de codificação do PSR-2.

Eu recomendaria esta biblioteca sobre phpunit-solenium - como foi originalmente projetado para o selênio 1 (embora hoje em dia o suporte ao selênio 2) e sua API seja fortemente apertada para a phpunit. Ele também não suporta alguns dos recursos do WebDriver e não está atualizado com o UpComin Especificação W3C WebDriver.

Php-webdriver é por outro lado biblioteca independente, mas seu integração com phpunit é bastante simples - ou você pode usar ferramentas existentes como Comissário de bordo, que inclui toda a integração da phpunit e também fornece uma boa camada de conveniência e por exemplo. Deixe simplesmente executar vários testes em paralelo (sem a necessidade de outras ferramentas como Paratest).

Também existem outras opções de integração da estrutura de teste mencionadas no Página inicial do projeto.

Código de integração de selênio da phpunit vive como um projeto separado em Github, até onde eu posso ver, não suporta o selênio 2, então a resposta para sua pergunta seria - não, você não pode usar o Selenium 2 com a phpunit.

Mas você pode clonar a árvore de origem e fazê -la funcionar com o Selenium 2.

Criamos uma biblioteca para isso, espero que ajude. Ele também usa o protocolo JSON Wire, mas pretendemos torná -lo compatível com os exemplos de outros idiomas, para que a sintaxe seja muito semelhante. Aqui está o link: https://github.com/nearsoft/php-seleniumclient

Se você gosta, compartilhe, melhore ou bifurque :)

Atenciosamente, Mark.

As ligações do phpunit webdriver são hospedadas no código do Google. Há algo que precisamos entender além disso.

  1. Phpunit precisa ser instalado. (Através do pacote de pêra ou download e instale manualmente)
  2. O PHP IDE, como o Eclipse PDT, deve ser baixado e instalado.
  3. O servidor de selenium-Stand-Alone deve estar em execução ao executar o teste de selênio do WebDriver

Eu escrevi um tutorial sobre como usar o Selenium 2, Wrapper do Facebook, encontre aqui:

http://testigniter.blogspot.co.uk/2012/01/running-selenium-webdriver-using.html

Eu recomendei o uso de Menta, uma estrutura Selenium 2 que requer WebDriver.Ambos os pacotes são compatíveis com PSR-0, então você pode usá-los com o Composer.Você pode configurar o Selenium com o phpunit.xml.Aqui um exemplo

<phpunit bootstrap="tests/bootstrap.php"
         backupGlobals="false" backupStaticAttributes="false"
         strict="true" verbose="true">
    <php>
        <var name="testing.selenium.seleniumServerUrl" value="http://localhost:4444/wd/hub" />
        <var name="testing.selenium.browser" value="firefox" />
        <var name="testing.selenium.windowPosition" value="0,0" />
        <var name="testing.selenium.windowSize" value="1280x1024" />
        <var name="testing.selenium.windowFocus" value="1" />
        <var name="testing.selenium.timeoutImplicitWait" value="10000" />
    </php>
    <testsuites>
        <testsuite name="Integrationstests">
            <directory suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">tests/integration</directory>
        </testsuite>
    </testsuites>
    <logging>
        <log type="junit" target="build/logs/junit.xml"/>
    </logging>
</phpunit>

O arquivo bootstrap lê as variáveis ​​de configuração de testing.selenium.*, para que você possa definir facilmente novas variáveis.

<?php

\Menta_ConfigurationPhpUnitVars::addConfigurationFile(__DIR__ . '/../phpunit.xml');

$configuration = \Menta_ConfigurationPhpUnitVars::getInstance();
\Menta_SessionManager::init(
    $configuration->getValue('testing.selenium.seleniumServerUrl'),
    $configuration->getValue('testing.selenium.browser')
);

Agora você pode implementar facilmente seus casos de teste.Aqui um exemplo

<?php

namespace tests\integration;

use WebDriver\LocatorStrategy;

class TestSearch extends \PHPUnit_Framework_TestCase
{
    public function testGoogle()
    {
        $session = \Menta_SessionManager::getSession();
        $session->open('http://www.google.de');
        $element = $session->element(LocatorStrategy::NAME, 'q');
        $this->assertTrue($element->displayed());
    }
}

O Pacote Menta também possui dois arquivos demo, localizados aqui

Hoje demos um salto profundo no Selenium e no Phpunit.É possível e você pode encontrar alguns exemplos e instruções aqui:http://phpunit.de/manual/current/en/selenium.html

O criador do phpunit obteve alguns bons exemplos da API.Com um pouco de experimentação e leitura da mensagem de erro, você se dará bem.Também não encontrei uma ótima biblioteca.

https://github.com/sebastianbergmann/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php

Por último, um tutorial do nettuts que ajuda você no básico:http://net.tutsplus.com/tutorials/php/how-to-use-selenium-2-with-phpunit/

Sim, Selenium 2 (WebDriver) e PHPUnit tests é simples. Mas posso querer dar -lhe conselhos de que o primeiro você deve tentar Selenium IDE Porque você precisa esperar em selenium command. Se você espera em Selenium command se for assim selenium 2 (Webdriver) e PHPUnit test será mais simples para você.

Podes tentar selenium IDE tutoriais em aqui E você pode aprender selenium 2 (Webdriver) and PHPUnit no aqui.

Eu trabalho em Selenium2php. Eu tenho muitos testes para selênio1 registrados com o Selênio IDE. Agora ele converte testes HTML em selênio2. Na verdade, para phpunit_extensions_selenium2testcase. Vou implementar mais comandos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top