#php #webdriver #selenium-chromedriver
#php #webdriver #selenium-chromedriver
Вопрос:
Я хотел бы реализовать класс для выполнения некоторых общих функций webdriver, но я продолжаю получать: сервер драйверов умер.
Что-то вроде этого:
class mywebdriver {
function __construct( $args ){
//options
$options = new ChromeOptions();
$options->addArguments($args);
//capabilities
$caps = DesiredCapabilities::chrome();
$caps->setCapability(ChromeOptions::CAPABILITY, $options);
$driver = ChromeDriver::start($caps);
$driver->manage()->timeouts()->implicitlyWait = 20;
$this->driver = $driver;
}
function login(){
//all things related to logging into a site using $this->driver
$this->driver->get( "www.url.com" );
}
function logout(){
//all things related to logging into a site using $this->driver
$this->driver->quit();
}
function search( $value ){
//enter a value in the search field and print results
}
... other methods
}
Затем объединение в цепочку методов, таких как:
$drive = new mywebdriver();
try {
$drive->login()
->search( "toyota" )
->search( "ford" )
->logout();
} catch (Exception $e) {
echo "Caught Exception". $e->getMessage();
}
Является ли это типичным и возможным? Я попробовал несколько вещей, но сервер драйверов продолжает выдавать мне исключение «died».
Ответ №1:
Чтобы реализовать шаблон цепочки методов, просто верните экземпляр следующим образом:
public function search( $value ) : mywebdriver
{
//enter a value in the search field and print results
return $this;
}
Комментарии:
1. Именно так работает большинство моих классов, но webdriver не хочет оставаться в живых после первого метода .. идеи?
2. @BenCoffin Я не понимаю, что ты имеешь в виду. Более того, когда экземпляр больше не активен, методы вообще не могут вызываться для него (независимо от того, подключен он или нет).
3. Я просто пытаюсь выяснить, могут ли методы webdriver быть объединены в цепочку подобным образом, или они умрут до того, как будут возвращены из первого метода. Я надеялся, что кто-нибудь в stackoverflow сделал (приведенный выше пример) с webdriver и столкнулся с тем же исключением и знал, почему он, похоже, не хочет связываться.