Думаю нет нужды рассказывать про паттерн PageObject и то как он реализован в байндингах для Java, C# и других языков.
Сегодня я расскажу как реализовать его на PHP. Вы скажите что для PHP есть множество версий клиента и универсальный паттерн будет сделать тяжело... Нет не тяжело скажу я вам.
Нужно просто использовать возможности языка и среды разработки.
Итак приступим:
<php
/**
* описываем тут наши элементы из массива чтоб среда разработки о них знала
* @property element1
* @property element2
*/
class SimplePage{
//наш драйвер, не важно из какого клиента
protected $driver;
// конструктор
public __construct($driver){
$this->driver=$driver;
}
//собственно элементы на стрнаице в виде массива
private $elements=array(
"element1"=>"//xpath1",
"element2"=>"//xpath2",
);
//начинается магия
public function __get($name){
if (array_key_exists($name, $this->elements)){
// каюсь тут уже придется использовать конкретный код из клиента
// в нашем случае отсюда https://github.com/voodoo144/PHP-WebDriver
return $this->driver->findElement(By::xPath($this->elements[$name]));
}
}
}
Пример использования:
$page = new SimplePage($driver);
$page->element1; //вернет WebElement c xpath1
$page->element2; //вернет WebElement c xpath2
Надеюсь код получисля довольно очевидным. И если честно мне он нравится намного больше чем версия для Java.
Сегодня я расскажу как реализовать его на PHP. Вы скажите что для PHP есть множество версий клиента и универсальный паттерн будет сделать тяжело... Нет не тяжело скажу я вам.
Нужно просто использовать возможности языка и среды разработки.
Итак приступим:
<php
/**
* описываем тут наши элементы из массива чтоб среда разработки о них знала
* @property element1
* @property element2
*/
class SimplePage{
//наш драйвер, не важно из какого клиента
protected $driver;
// конструктор
public __construct($driver){
$this->driver=$driver;
}
//собственно элементы на стрнаице в виде массива
private $elements=array(
"element1"=>"//xpath1",
"element2"=>"//xpath2",
);
//начинается магия
public function __get($name){
if (array_key_exists($name, $this->elements)){
// каюсь тут уже придется использовать конкретный код из клиента
// в нашем случае отсюда https://github.com/voodoo144/PHP-WebDriver
return $this->driver->findElement(By::xPath($this->elements[$name]));
}
}
}
Пример использования:
$page = new SimplePage($driver);
$page->element1; //вернет WebElement c xpath1
$page->element2; //вернет WebElement c xpath2
Надеюсь код получисля довольно очевидным. И если честно мне он нравится намного больше чем версия для Java.