selenium php环境怎么搭建

藏色散人
发布: 2023-03-17 11:48:01
原创
1480 人浏览过

selenium php环境搭建方法:1、下载最新线程安全版PHP zip压缩包;2、复制一份“php.ini-development”改名为“php.ini”放到安装路径下;3、设置系统变量下的Path为“D:\Software\php-7.2.28-Win32-VC15-x64;”即可。

selenium php环境怎么搭建

本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。

selenium php环境怎么搭建?

windows环境下的PHP+selenium环境搭建

最近想要入门自动化测试,之前也写过使用codeception进行单元测试和接口测试,UI测试部分我选择了selenium框架,接下来我们来进行相关环境的搭建。

  • PHP环境的搭建

1、进入PHP下载地址 http://windows.php.net/download 下载最新线程安全版PHP zip压缩包,解压缩后放在想要安装的路径下。(此处需要注意,win7系统不能用php7.4版本,会提示丢失 VCRUNTIME140.dll)

2、进入PHP安装目录,复制一份php.ini-development 改名为 php.ini 放到安装路径下,打开找到 ;extension_dir=ext,去掉注释符,将值改为 PHP安装路径\ext

3、右键计算机->属性->高级系统设置->环境变量->系统变量下的Path,点击编辑,在后面加上PHP的路径D:\Software\php-7.2.28-Win32-VC15-x64;

至此,PHP安装完成,可打开cmd查看对应的版本,如图:

  • java运行环境的搭建,这里需要说明一下selenium运行文件是一个jar包,你必须搭建好java运行的环境才能启用selenium。

进入官网,https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,找到适配的版本,下载jdk。

  •  下载selenium文件,http://selenium-release.storage.googleapis.com/index.html (selenium 下载地址)下载selenium-server-standalone-3.8.0.jar的jar包文件,版本可自行选择

  • 下载浏览器驱动文件(这里需要注意的是:一定要下载与本机安装浏览器版本匹配的驱动文件) 。Google浏览器使用的驱动文件名为:   chromedriver,https://chromedriver.storage.googleapis.com/index.html (chrome driver 下载地址)。Firefox的驱动文件名为:geckodriver.exe,https://docs.seleniumhq.org/download/(selenium官网去下载,选择java的)

   chrom和chromedriver的版本对应可查看每个版本里面的note,chrome的版本号可通过chrome://settings/help查看

注意:下载完成的驱动文件要放在php的根目录下

  •  下载 PHP+selenium 的demo文件,https://github.com/facebook/php-webdriver (里面有example.php以及 tests文件下的案例文档共参考)。
  • 写好demo之后你就可以进行测试了,首先运行下载的selenium的jar包文件,在cmd命令行中进入你放置selenium文件的目录然后执行以下命令(注意:需要在第二步中配置java运行环境变量)           java -jar selenium-server-standalone-3.8.0.jar 。     如果你的命令行出现了以下提示那就是启动成功了。

 

 在执行example.php的时候,Notice: Undefined index: ELEMENT in D:\test\vendor\facebook\webdriver\lib\Remote\RemoteWebDriver.php on line 178,

经查,是因为较新版本的selenium的通信协议变动导致的,可在启动时加上相关的参数控制:

java -jar selenium-server-standalone-3.8.0.jar -enablePassThrough false至此,通过编写example.php文件便可实现简单的自动登录流程。
登录后复制

运行exam.php之前,需要将ekwing下vendor目录复制一份到phpDirver目录下

可修改example.php实现别的网站自动登录,example.php如下:

<?php
// An example of using php-webdriver.
// Do not forget to run composer install before. You must also have Selenium server started and listening on port 4444.namespace Facebook\WebDriver;use Facebook\WebDriver\Remote\DesiredCapabilities;use Facebook\WebDriver\Remote\RemoteWebDriver;require_once(&#39;vendor/autoload.php&#39;);// This is where Selenium server 2/3 listens by default. For Selenium 4, Chromedriver or Geckodriver, use http://localhost:4444/$host = &#39;http://localhost:4444/wd/hub&#39;;$capabilities = DesiredCapabilities::chrome();$driver = RemoteWebDriver::create($host, $capabilities);$driver->manage()->window()->maximize();// navigate to Selenium page on Wikipedia$driver->get(&#39;http://www.baidu.com/Login/s?name=lzxx&#39;);// write &#39;PHP&#39; in the search box$driver->findElement(WebDriverBy::id(&#39;name&#39;)) // find search input element->sendKeys(&#39;xxxx&#39;); // fill the search box$driver->findElement(WebDriverBy::id(&#39;xxxx&#39;))    ->sendKeys(&#39;88888888&#39;);//$driver->submit(); // submit the whole form

// wait until &#39;PHP&#39; is shown in the page heading element
//$driver->wait()->until(
//    WebDriverExpectedCondition::elementTextContains(WebDriverBy::id(&#39;firstHeading&#39;), &#39;PHP&#39;)
//);

// print title of the current page to outputecho "The title is &#39;" . $driver->getTitle() . "&#39;\n";// print URL of current page to outputecho "The current URL is &#39;" . $driver->getCurrentURL() . "&#39;\n";// find element of &#39;History&#39; item in menu
//$historyButton = $driver->findElement(
//    WebDriverBy::cssSelector(&#39;#jsLoginBtn&#39;)
//);$historyButton = $driver->findElement(
    WebDriverBy::id(&#39;jsLoginBtn&#39;)
);// read text of the element and print it to outputecho "About to click to button with text: &#39;" . $historyButton->getText() . "&#39;\n";// click the element to navigate to revision history page$historyButton->click();// wait until the target page is loaded$driver->wait()->until(
    WebDriverExpectedCondition::titleContains(&#39;教师首页&#39;)
);// print the title of the current pageecho "The title is &#39;" . $driver->getTitle() . "&#39;\n";// print the URI of the current pageecho "The current URI is &#39;" . $driver->getCurrentURL() . "&#39;\n";// delete all cookies
//$driver->manage()->deleteAllCookies();

// add new cookie$cookie = new Cookie(&#39;cookie_set_by_selenium&#39;, &#39;cookie_value&#39;);$driver->manage()->addCookie($cookie);// dump current cookies to output$cookies = $driver->manage()->getCookies();print_r($cookies);$driver->get(&#39;http://www.ekwing.com/exam/teacher/selflist&#39;);// close the browser
//$driver->quit();
登录后复制

题外话:因为selenium没有支持PHP语言的集成框架,因此我们要使用selenium在项目中进行功能测试的话,需要自己将各个脚本组合,差不多就是写个框架了。

推荐学习:《PHP视频教程

以上是selenium php环境怎么搭建的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板