ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
> Selenium是用于自动化测试工具,它是在Apache许可证2.0许可的开放源代码工具。Selenium是一套工具,它有助于自动化Web应用程序测试。 >* 框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。 >* 使浏览器兼容性测试自动化成为可能,尽管在不同的浏览器上依然有细微的差别。 >* 使用简单,可使用Java,Python等多种语言编写用例脚本。 [TOC] #### 1.通过composer安装Selenium: ~~~ composer require facebook/webdriver ~~~ #### 2.下载Selenium Server并启动: ~~~ //到http://www.seleniumhq.org/download/ 下找到Selenium Standalone Server并下载,或到https://chromedriver.storage.googleapis.com/index.html 上面下载。 //到命令提示符里启动以下命令(前提需要安装jdk,确保java命令能够运行) java -jar selenium-server-standalone-2.42.2.jar ~~~ #### 3.运行测试代码 > 另启命令提示符,运行php test.php 命令 > 示例脚本test.php: ~~~ <?php namespace 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"); // start Firefox with 5 second timeout $waitSeconds = 15; //需等待加载的时间,一般加载时间在0-15秒,如果超过15秒,报错。 $host = 'http://localhost:4444/wd/hub'; // this is the default //这里使用的是chrome浏览器进行测试,需到http://www.seleniumhq.org/download/上下载对应的浏览器测试插件 //我这里下载的是win32 Google Chrome Driver 2.25版:https://chromedriver.storage.googleapis.com/index.html?path=2.25/ $capabilities = DesiredCapabilities::chrome(); $driver = RemoteWebDriver::create($host, $capabilities, 5000); // navigate to 'http://docs.seleniumhq.org/' $driver->get('https://www.baidu.com/'); echo iconv("UTF-8","GB2312",'标题1').":" . $driver->getTitle() . "\n"; //cmd.exe中文乱码,所以需转码 $driver->findElement(WebDriverBy::id('kw'))->sendKeys('wwe')->submit(); // 等待新的页面加载完成.... $driver->wait($waitSeconds)->until( WebDriverExpectedCondition::visibilityOfElementLocated( WebDriverBy::partialLinkText('100shuai') ) ); $driver->findElement(WebDriverBy::partialLinkText('100shuai'))->sendKeys('xxx')->click(); //一般点击链接的时候,担心因为失去焦点而抛异常,则可以先调用一下sendKeys,再click switchToEndWindow($driver); //切换至最后一个window // 等待加载.... $driver->wait($waitSeconds)->until( WebDriverExpectedCondition::visibilityOfElementLocated( WebDriverBy::partialLinkText('SmackDown收视率创历史新低') ) ); echo iconv("UTF-8","GB2312",'标题2').":" . $driver->getTitle() . "\n"; //cmd.exe中文乱码,所以需转码 $driver->findElement(WebDriverBy::partialLinkText('SmackDown收视率创历史新低'))->click(); switchToEndWindow($driver); //切换至最后一个window // 等待加载.... $driver->wait($waitSeconds)->until( WebDriverExpectedCondition::titleContains('SmackDown收视率创历史新低') ); echo iconv("UTF-8","GB2312",'标题3').":" . $driver->getTitle() . "\n"; //cmd.exe中文乱码,所以需转码 //关闭浏览器 $driver->quit(); //切换至最后一个window //因为有些网站的链接点击过去带有target="_blank"属性,就新开了一个TAB,而selenium还是定位到老的TAB上,如果要实时定位到新的TAB,则需要调用此方法,切换到最后一个window function switchToEndWindow($driver){ $arr = $driver->getWindowHandles(); foreach ($arr as $k=>$v){ if($k == (count($arr)-1)){ $driver->switchTo()->window($v); } } } ?> ~~~ 下载资料: 1.http://selenium-release.storage.googleapis.com/index.html (selenium 下载地址) 2.https://chromedriver.storage.googleapis.com/index.html (chrome driver 下载地址) 3.http://phantomjs.org/download.html (PhantomJS Driver 下载地址) 4.http://www.cnbeta.com/articles/soft/563605.htm (chrome 下载地址,建议使用这个版本或者以下版本,其他最新版本,浏览器识别了是否为测试软件,对于个别用途的软件需要注意,如果仅仅是为了做测试,那就无所谓了。) 5.http://blog.csdn.net/huilan_same/article/details/51896672 (chromedriver.exe版本对应的chrome版本) 参考文档: 1.https://github.com/facebook/php-webdriver (里面有example.php以及 tests文件下的案例文档共参考) 2.https://github.com/facebook/php-webdriver/wiki 快速开始教程 3.http://facebook.github.io/php-webdriver/namespaces/default.html API文档 4.http://www.yiibai.com/selenium/ 易百教程 6.https://github.com/chibimagic/WebDriver-PHP/ 7.https://code.google.com/archive/p/php-webdriver-bindings/ 8.https://github.com/Element-34/php-webdriver 9.https://github.com/Nearsoft/php-selenium-client 10.http://pan.baidu.com/s/1eR31pM6 selenium_webdriver(python)第一版.pdf