selenium部署
composer require facebook/webdriver
下载jdk(略)下载selenium服务:
https://goo.gl/FCSwwD
运行selenium服务:
java -jar selenium-server-standalone-3.14.0.jar
下载chromedriver:
https://chromedriver.storage.googleapis.com/2.9/chromedriver_win32.zip
将chromedriver放到chrome安装目录下:
C:\Program Files (x86)\Google\Chrome\Application
移动chromedriver到chrome安装目录:
添加chrome安装目录下环境变量:
编写测试代码(test.php):
<?phpnamespace Facebook\WebDriver;use Facebook\WebDriver\Remote\DesiredCapabilities;use Facebook\WebDriver\Remote\RemoteWebDriver;require_once('vendor/autoload.php');header("Content-Type: text/html; charset=UTF-8");$waitSeconds = 15; //需等待加载的时间,一般加载时间在0-15秒,如果超过15秒,报错。$host = 'http://localhost:4444/wd/hub'; // this is the default$capabilities = DesiredCapabilities::chrome();$driver = RemoteWebDriver::create($host, $capabilities, 5000);$baseUrl = 'http://www.bilibili.com/';$driver->get($baseUrl);echo consoleText($driver->getTitle()) . "\n"; //cmd.exe中文乱码,所以需转码$topLists = $driver->findElement(WebDriverBy::className('container-top-wrapper'))->findElement(WebDriverBy::className('top-list-wrapper'))->findElements(WebDriverBy::tagName('li'));foreach ($topLists as $topLi) {$itemContent = $topLi->findElement(WebDriverBy::tagName('a'));echo consoleText($itemContent->getAttribute('title')) . ' : ' . consoleText($itemContent->getAttribute('href')) . "\n";}//关闭浏览器$driver->quit();function consoleText($text, $pageEncoding = '', $consoleEncoding = ''){// windowsif (!$consoleEncoding) { if (stristr(php_uname('s'), 'win')) { $consoleEncoding = "GBK"; } else { $consoleEncoding = 'UTF-8'; }}return exchangeEncoding($text, $pageEncoding, $consoleEncoding);}function exchangeEncoding($text, $pageEncoding = '', $targetEncoding = 'UTF-8'){if (!$pageEncoding) { $pageEncoding = mb_detect_encoding($text, array("ASCII", 'UTF-8', "GB2312", "GBK", 'BIG5'));}if ($pageEncoding != $targetEncoding) { return mb_convert_encoding($text,$targetEncoding,$pageEncoding);}return $text;}//切换至最后一个windowfunction switchToEndWindow($driver){$arr = $driver->getWindowHandles();foreach ($arr as $k => $v) { if ($k == (count($arr) - 1)) { $driver->switchTo()->window($v); }}}
运行测试代码:
php test.php
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。