Comment faire fonctionner Selenium avec PHP / Firefox3 sur Linux
Question
J'essaie de faire Selenium RC utiliser Firefox 3 sous Linux avec PHP / Apache, mais je rencontre des problèmes. Voici ce que j'ai fait:
- J'ai installé l'extension Firefox Selenium-IDE.
- Sur le serveur Web (qui dans mon cas est en fait la même machine sous Firefox), j'ai démarré le serveur Selenium avec: java -jar selenium-server.jar -interactive
- J'ai un script PHP comme suit:
PHP:
require_once 'Testing/Selenium.php';
$browser = new Testing_Selenium("*custom /usr/lib/firefox-3.0.3/firefox", "https://www.example.com");
$browser->start();
Lorsque j'exécute le script PHP, un nouvel onglet Firefox est lancé, mais le message d'erreur suivant s'affiche :
The requested URL /selenium-server/core/RemoteRunner.html was not found on this server.
J'ai eu plus de succès avec Firefox 2 (en utilisant "* firefox"
au lieu de "* custom"
, mais je ne souhaite pas l'utiliser pour mes projet en cours.
La solution
Je ne suis pas sûr de l'étiquette qui consiste à répondre à votre propre question ... mais après avoir expérimenté de façon empirique, voici comment j'ai réussi à faire fonctionner Selenium avec PHP / Firefox3 sur Ubuntu.
- J'ai téléchargé RC et copié le répertoire du client php dans / usr / share / php sous le nom 'Selenium'
- J'ai accédé au répertoire Selenium Server lors du téléchargement et démarré selenium avec
java -jar sélenium-server.jar
- J'ai créé un nouveau profil Firefox (en exécutant firefox -ProfileManager). J'ai appelé le nouveau profil 'Selenium'
- Au sein de ce profil, je modifie les préférences de réseau Firefox pour utiliser un proxy pour tous les protocoles via le port local 444.
-
J'ai créé mon script php et l'ai exécuté avec cette commande:
php -d include_path = ".: / usr / share / php: / usr / share / php / Selenium / PEAR" test.php
J'ai cité ci-dessous mon premier script de test (de base, non-PHPUnit, non-OO).
require_once 'Testing/Selenium.php';
$oSelenium = new Testing_Selenium(
"*custom /usr/lib/firefox-3.0.3/firefox -P Selenium",
"https://www.example.com");
$oSelenium->start();
$oSelenium->open("/");
if (!$oSelenium->isElementPresent("id=login_button")) {
$oSelenium->click("logout");
$oSelenium->waitForPageToLoad(10000);
if (!$oSelenium->isElementPresent("id=login_button")) {
echo "Failed to log out\n\n";
exit;
}
}
$oSelenium->type("login", "my_username");
$oSelenium->type("password", "my_password");
$oSelenium->click("login_button");
$oSelenium->waitForPageToLoad(10000);
$oSelenium->click("top_nav_campaigns");
$oSelenium->stop();
Autres conseils
J'utilise phpunit, sélénium RC php api pour exécuter mes tests. Mon cas de test ressemble à
1235$Deepan@Newton~/selenium/ide_scripts$
cat mytest.php
'FF on linux',
'browser' => '*firefox',
'host' => '10.211.55.8',
'port' => 4444,
'timeout' => 30000,
),
array(
'name' => 'FF on windows',
'browser' => '*firefox',
'host' => '10.211.55.5',
'port' => 4444,
'timeout' => 30000,
),
*/
array(
'name' => 'Google Chrome on windows',
'browser' => '*googlechrome',
'host' => '10.211.55.5',
'port' => 4444,
'timeout' => 30000,
),
/*
array(
'name' => 'IE on windows',
'browser' => '*iexplore',
'host' => '10.211.55.5',
'port' => 4444,
'timeout' => 30000,
),
array(
'name' => 'Safari on MacOS X',
'browser' => '*safari',
'host' => 'localhost',
'port' => 4444,
'timeout' => 30000,
),
array(
'name' => 'Firefox on MacOS X',
'browser' => '*chrome',
'host' => 'localhost',
'port' => 4444,
'timeout' => 30000,
),
*/
array(
'name' => 'Google Chrome on MacOS X',
'browser' => '*googlechrome',
'host' => 'localhost',
'port' => 4444,
'timeout' => 30000,
)
);
protected function setUp()
{
//$this->setBrowser("*chrome");
$this->setBrowserUrl("http://www.facebook.com/");
}
public function testMyTestCase()
{
$this->open("/index.php?lh=94730c649368393b6954cb9fc0802e0a&eu=iKjrC7Q2aC-8tcU7PVLilg");
$this->type("email", "myemail@domain.com");
$this->type("pass", "mypassword");
$this->click("persistent");
$this->click("//input[@type='submit']");
$this->waitForPageToLoad("30000");
sleep(10);
$this->open("http://apps.facebook.com/myapp/");
sleep(4);
$this->click("link=Play");
$this->waitForPageToLoad("30000");
sleep(4);
$this->click("navAccountLink");
sleep(4);
$this->click("link=Logout");
$this->waitForPageToLoad("30000");
sleep(4);
}
}
?>
1332$Deepan@Newton~/selenium/ide_scripts$
phpunit mytest.php
Cela permettra de se connecter aux navigateurs s'exécutant dans des machines virtuelles