Шпаргалка по командам
Запуск браузера
$host = 'http://localhost:4444'; $options = new ChromeOptions(); $options->addArguments([ '–disable-extensions', 'start-maximized', 'disable-popup-blocking', 'test-type' ]); $devices = ['iPhone 6', 'Nexus 5', 'Nexus 6', 'Nexus 7', 'Nokia N9']; $random_device = $devices[array_rand($devices)]; $mobile_emulation = [ 'deviceName' => $random_device ]; $options->setExperimentalOption('mobileEmulation', $mobile_emulation); $caps = DesiredCapabilities::chrome(); $caps->setCapability(ChromeOptions::CAPABILITY, $options); $driver = RemoteWebDriver::create($host, $caps, 90000, 90000);
Переход по ссылке
$driver->get('http://google.com'); $driver->navigate()->to('http://google.com'); WebDriver может не ждать загрузки страницы, поэтому лучше использовать паузу. $driver->wait(10, 2000)->until( WebDriverExpectedCondition::titleContains('Google') ); или $driver->wait(10, 1000)->until( WebDriverExpectedCondition::visibilityOfElementLocated(WebDriverBy::linkText("Реклама"))); или sleep(10);
Поиск элементов на странице
# найти 1-й элемент на странице
$title = $driver->findElement(WebDriverBy::tagName("h1"));
найти все элементы на странице
// return Array() $links = $driver->findElements(WebDriverBy::className("links"));
поиск по критериям
по имени класса
$element = $driver->findElement(WebDriverBy::className("links"));
по id элемента
$element = $driver->findElement(WebDriverBy::id("q"));
по CSS селектору
$element = $driver->findElement(WebDriverBy::cssSelector('#food span.dairy'));
по имени тега
$element = $driver->findElement(WebDriverBy::tagName("div"));
по имени
$element = $driver->findElement(WebDriverBy::name('search_input'));
по тексту ссылки
$element = $driver->findElement(WebDriverBy::linkText("cheese"));
часть имени ссылки
$element = $driver->findElement(WebDriverBy::partialLinkText("chee"));
по XPath
$element = $driver->findElement(WebDriverBy::xpath('//a[@href='/logout']'));
XPath проще всего найти в инструментах разработчика
Действия с элементами
кнопки\ссылки\картинки
$element = $driver->findElement(WebDriverBy::id('BUTTON_ID'))->click();
текстовое поле
# ввод любого текста $driver->findElement(WebDriverBy::id('BUTTON_ID'))->click(); $driver->getKeyboard()->sendKeys('любой текст'); # Нажатие клавиш на клавиатуре `ctrl+a` & `delete` $driver->getKeyboard() ->sendKeys(array( WebDriverKeys::CONTROL, 'a', )); $driver->getKeyboard() ->sendKeys(array( WebDriverKeys::BACKSPACE, )); # CONTROL, ENTER, SHIFT, ALT, BACKSPACE # также можно использовать метод clear() для очистки input'ов или textarea $loginInput = $driver->findElement(WebDriverBy::name("login")); $loginInput->sendKeys("логин_пользователя"); $loginInput->clear();
Checkbox/Radio
# проверка выбран ли элемент $driver->findElement(WebDriverBy::id('CheckBox'))->isSelected(); # выбор элемента $driver->findElement(WebDriverBy::id('CheckBox'))->click(); # сброс выбора элемента the element $driver->findElement(WebDriverBy::id('CheckBox'))->clears();
Select
# получить выбранный элемент $select = $driver->findElement(WebDriverBy::tagName('select')); # получить все options для элемента $allOptions = $select->findElement(WebDriverBy::tagName('option')); # выбрать options foreach ($allOptions as $option) { echo "Value is:" . $option->getAttribute('value); $option->click(); }
проверка видимости элемента
$driver->findElement(WebDriverBy::id('element'))->isDisplayed();
получить текст элемента
$driver->findElement(WebDriverBy::id('element'))->getText();
получить атрибут элемента
$driver->findElement(WebDriverBy::id('element'))->getAttribute('class');
Работа с Cookies
// получить все куки $cookies = $driver->manage()->getCookies(); // запись куки $driver->manage()->addCookie(['name' => 'cookie_name, 'value' => 'cookie_value']); && $cookie = new Cookie('cookie_name', 'cookie_value'); $driver->manage()->addCookie($cookie); && $cookie = new \Facebook\WebDriver\Cookie('cookie_name', 'cookie_value'); $driver->manage()->addCookie($cookie); // удалить куки по имени $driver->manage()->deleteCookieNamed('CookieName'); // удалить все куки $driver->manage()->deleteAllCookies();
Сделать скриншот страницы
// должны быть права на запись в директорию $driver->takeScreenshot('screenshot.png');
Выполнить JavaScript код
$driver->executeScript("return window.location.pathname");
Закрыть браузер
$driver->quit();
Хорошая документация
https://www.selenium.dev/documentation/en/getting_started/Скачать драйвер Chrome
https://chromedriver.storage.googleapis.com/index.htmlЭмуляторы различных браузеров и платформ
https://chromedriver.chromium.org/mobile-emulationНастройки для Google Chrome
https://github.com/php-webdriver/php-webdriver/wiki/Chrome#chromeoptions