wsl2-Ubuntu20.04_selenium2环境搭建流程

selenium2环境搭建流程

一,系统环境

操作系统:Ubuntu 20.04 LTS WSL2
系统框架:Drupal8

二,selenium介绍

selenium主要用于web应用程序的自动化测试,还支持所有基于web的管理任务自动化。
selenium经历了2个版本,selenium1.0和selenium2.0;selenium不是一个单独的工具,而是由一些插件、类库构成,每个组成部分都有其特点和应用场景。
selenium2.0由以下组件构成:
wsl2-Ubuntu20.04_selenium2环境搭建流程_第1张图片

selenium2.0 = selenium1.0 + Webdriver
**Webdirver:**通过原生浏览器支持或扩展来直接控制浏览器,针对各个浏览器开发,与浏览器紧密集成,支持创建更高级的测试,其还可以利用操作系统级的调用,模拟用户输入;
**selenium IDE:**嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作录制与回放功能,主要用于快速创建BUG及重现脚本,可转化为多种语言;
**selenium Gird:**测试辅助工具,利用现有的计算机基础设施,实现多台计算上和异构环境中运行测试用例;
**selenium RC:**selenium的核心组件,支持多种不同语言编写自动化测试脚本,通过其服务器作为代理服务器去访问应用,达到测试的目的;
**Client Libraries:**Client Libraries库主要用于编写测试脚本,用来控制Selenium Server的库;
**Selenium Server:**负责控制浏览器行为;
Selenium Core(一个JavaScript函数集合):被嵌入到浏览器中,通过它实现用程序对浏览器进行操作;
Launcher:用于启动浏览器,把Core加载到浏览器页面当中,并把浏览器代理设置为Selenium Server的HTTP Proxy;

二,安装Behat、Mink和mink-selenium2-driver

**Behat:**Behat是PHP的开源行为驱动开发框架。详情链接
**Mink:**Mink 是开源的 PHP 浏览器/控制器 模拟测试工具。Mink 可以模拟 Web 应用和浏览器之间的交互,测试 Web 应用的行为是否正确。详情链接
1.使用Composer安装Behat及所需的依赖包(Ubuntu20.04安装并使用Composer):

composer require --dev Behat/Behat dmore/behat-chrome-extension drupal/drupal-extension

2.初始化设置。安装包后,必须执行init命令,CD到应用程序根目录,执行以下命令,生成目录:

vendor/bin/behat --init

wsl2-Ubuntu20.04_selenium2环境搭建流程_第2张图片


3.安装Mink

composer require --dev behat/mink

安装成功如图:

wsl2-Ubuntu20.04_selenium2环境搭建流程_第3张图片

3,创建功能描述文件目录及文件,并配置behat.yml,如下图(生成的脚本文件暂时先忽略,一会执行完用例后才会生成):

wsl2-Ubuntu20.04_selenium2环境搭建流程_第4张图片

4. 添加测试.创建UserContext.feature文件,并添加一下内容(注意格式和关键字大小写)

wsl2-Ubuntu20.04_selenium2环境搭建流程_第5张图片

5,执行测试用例

vendor/bin/behat   执行所有测试用例
/vendor/bin/behat --config=./behat.yml --suite=user_features   指定测试文件

执行后会生成UserContext.php文件,以及方法(方法体需要自己根据业务功能编写,方法的参数是.feature文件中步骤中传递过来的,如图)

wsl2-Ubuntu20.04_selenium2环境搭建流程_第6张图片


运行成功

wsl2-Ubuntu20.04_selenium2环境搭建流程_第7张图片

如果顺利执行到这里,那么Behat和Mink就算集成成功,接下来安装mink-selenium-driver.
6.执行一下命令

composer require behat/mink-selenium2-driver

安装成功如图:

wsl2-Ubuntu20.04_selenium2环境搭建流程_第8张图片

五,安装Ubuntu20.04桌面

1,下载并安装VcXSrv X server for Windows,一路默认安装
.提供给你们一个下载链接
****
wsl2-Ubuntu20.04_selenium2环境搭建流程_第9张图片


wsl2-Ubuntu20.04_selenium2环境搭建流程_第10张图片


wsl2-Ubuntu20.04_selenium2环境搭建流程_第11张图片

可以 Save configuration,保存设置。
2,在Linux命令行执行一下命令

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install xfce4
#安装成功后,打开配置文件
vim ~/.bashrc   

Vim使用教程
3.打开windows的CMD,输入ipconfig,查看WSL的IPv4地址,并将该IP写入到.bashrc 文件中如图:

wsl2-Ubuntu20.04_selenium2环境搭建流程_第12张图片

4.保存之后,执行如下指令。

source ~/.bashrc   让配置立即生效

5.双击Windows桌面“XLaunch”图标,打开服务;
6.Linux端执行:startxfce4,启动桌面系统;

wsl2-Ubuntu20.04_selenium2环境搭建流程_第13张图片

注意:有个问题就是重启电脑后,再次启动时会报错

wsl2-Ubuntu20.04_selenium2环境搭建流程_第14张图片

因为Ubuntu中的IP每次启动后都会变,所以之前保存的IP会无效,之前尝试过修改为固定IP,但都失败了,所以就摸索了一个比较繁琐但是有用的方法,那就是重复第三步,每次启动桌面前,先修改一下DISPLAY的值,然后再启动桌面,就解决了,(警告:如果对Linux系统的网络配置不熟悉的小伙伴不要轻易尝试网上的方法,我差点重装环境,但如果有有效的方法还请不吝赐教)。

六,安装火狐浏览器

在安装浏览器时要先了解浏览器对应的驱动版本和selenium服务版本,本文档使用的**火狐浏览器版本为30,selenium服务为****selenium-server-standalone-2.45.0.jar**,因为selenium2中集成了火狐浏览器47版本以下的驱动(换句话说,火狐浏览器47版本一下不用下载浏览器驱动,selenium2中已经集成好了),在这里给大家一些参考资料,动手能力强的小伙伴可以试试其它版本:
谷歌浏览器下载:https://www.chromedownloads.net/chrome64win/
谷歌浏览器驱动下载:http://chromedriver.storage.googleapis.com/index.html
谷歌浏览器与驱动对应表:https://www.cnblogs.com/yfacesclub/p/8482681.html
火狐浏览器下载:http://ftp.mozilla.org/pub/firefox/releases/
火狐浏览器驱动下载(47版本以上可以使用):https://github.com/mozilla/geckodriver/tags
火狐浏览器与驱动对应表(47版本以上):https://blog.csdn.net/qq_43592253/article/details/107080586
selenium服务下载:http://selenium-release.storage.googleapis.com/index.html
根据以上资料下载对应的浏览器版本和驱动,然后开始安装。
1,window窗口操作Linux文件,在Linux命令行输入一下命令后效果如图:

explorer.exe .
#或者使用CP复制或MV移动命令

cp和mv命令链接

wsl2-Ubuntu20.04_selenium2环境搭建流程_第15张图片

2.将下载的火狐浏览器压缩包,拷贝到/user/bin,并解压:

tar -zxvf firefox-30.0.tar.bz2

wsl2-Ubuntu20.04_selenium2环境搭建流程_第16张图片

3,创建浏览器软连接

cd /usr/bin   #切换到bin目录
sudo ln /usr/lib/firefox/firefox firefox -s   #给浏览器的二进制文件创建一个名为firefox的软连接(最好写为浏览器的名)
cd /etc/alternatives   #切换到alternatives目录
rm x-www-browser   #删除默认的浏览器连接
rm gnome-www-browser   #删除默认的浏览器连接
创建新的默认浏览器连接
sudo ln /usr/lib/firefox/firefox x-www-browser -s
sudo ln /usr/lib/firefox/firefox gnome-www-browser -s

4.在Linux命令行输入 firefox 然后回车;
如果浏览器打开,表示配置成功,如不行,关掉ubuntu重启;
到目前为止环境配置已完成,接下来就运行我们的自动化项目:

六,启动系统,运行Demo

1,编写自动登录代码(一下代码只用于参照,实际情况以实际为准):

#UserContext.feature 功能描述文件(用例)
Feature: test user login

    Scenario:use username and password
        Given I have a username "admin"
        And I have a password "Dam_123456"
        When I click login
        Then I will go to my home page
 'firefox',
            'version'           => '30',
            'platform'          => 'ANY',
            'browserVersion'    => '30',
            'browser'           => 'firefox',
            'name'              => 'Selenium2 Mink Driver',
            'deviceOrientation' => 'selenium2调试测试',
            'deviceType'        => 'tablet',
            'selenium-version'  => '2.45.0'
        );
        echo "初始化"."\n";
        echo "创建driver对象"."\n";
        $this->driver = new \Behat\Mink\Driver\Selenium2Driver('firefox');
        $this->driver->setDesiredCapabilities($caps);
        echo "创建session对象"."\n";
        $this->session = new Behat\Mink\Session($this->driver);
        echo "跳转网址"."\n";
        $this->session->visit('http://0.0.0.0/user/login');#IP以实际为准
        echo "放大窗口"."\n";
        $this->driver->maximizeWindow(); 

        // $this->session = new \Behat\Mink\Session($this->driver);  
        // $this->session->visit('http://localhost/user/login');      
        // $this->session->start();
        // $session->session_start();
        // $session->visit;

    }
     /**
     * @Given I have a username :arg1
     */
    public function iHaveAUsername($name)
    {
        if($name!=""){          
            #$this->driver->wait(5000,"等待控件");
            $this->driver->findElementXpaths('//*[@id="edit-name"]');
            $this->driver->setValue("//*[@id='edit-name']",$name);
            echo "用户名正确".$name;
        }
    }
    /**
     * @Given I have a password :arg1
     */
    public function iHaveAPassword($pass)
    {
        if($pass!=""){
            $this->driver->findElementXpaths('//*[@id="edit-pass"]');
            $this->driver->setValue('//*[@id="edit-pass"]',$pass);
            echo "密码正确".$pass;
        }
    }
    /**
     * @When I click login
     */
    public function iClickLogin()
    {
       $this->driver->click('//*[@id="edit-submit"]');
        echo "登录成功!";
    }
    /**
     * @Then I will go to my home page
     */
    public function iWillGoToMyHomePage()
    {
       $Wname =  $this->driver->getValue('/html/body/div/div/div[2]/header/nav/div[1]/a/span');
        echo "展示首页面!",$Wname;
    }
}

2.cd 到之前下载的selenium服务目录下,并运行以下命令:

java -jar selenium-server-standalone-2.45.0.jar

wsl2-Ubuntu20.04_selenium2环境搭建流程_第17张图片


2,运行测试用例

vendor/bin/behat --suite=user_features    #--suite 指定测试套件(可不写,执行全部用例)

wsl2-Ubuntu20.04_selenium2环境搭建流程_第18张图片

你可能感兴趣的:(PHP,linux,ubuntu,php)