wsl2-Ubuntu20.04_selenium2環境搭建流程
selenium2環境搭建流程
一,系統環境
作業系統:Ubuntu 20.04 LTS WSL2
系統框架:Drupal8
二,selenium介紹
selenium主要用於web應用程式的自動化測試,還支援所有基於web的管理任務自動化。
selenium經歷了2個版本,selenium1.0和selenium2.0;selenium不是一個單獨的工具,而是由一些外掛、類庫構成,每個組成部分都有其特點和應用場景。
selenium2.0由以下元件構成:
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
3.安裝Mink
composer require --dev behat/mink
安裝成功如圖:
3,建立功能描述檔案目錄及檔案,並配置behat.yml,如下圖(生成的指令碼檔案暫時先忽略,一會執行完用例後才會生成):
4. 新增測試.建立UserContext.feature檔案,並新增一下內容(注意格式和關鍵字大小寫)
5,執行測試用例
vendor/bin/behat 執行所有測試用例
/vendor/bin/behat --config=./behat.yml --suite=user_features 指定測試檔案
執行後會生成UserContext.php檔案,以及方法(方法體需要自己根據業務功能編寫,方法的引數是.feature檔案中步驟中傳遞過來的,如圖)
執行成功
如果順利執行到這裡,那麼Behat和Mink就算整合成功,接下來安裝mink-selenium-driver.
6.執行一下命令
composer require behat/mink-selenium2-driver
安裝成功如圖:
五,安裝Ubuntu20.04桌面
1,下載並安裝VcXSrv X server for Windows,一路預設安裝
.提供給你們一個下載連結
****
可以 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 檔案中如圖:
4.儲存之後,執行如下指令。
source ~/.bashrc 讓配置立即生效
5.雙擊Windows桌面“XLaunch”圖示,開啟服務;
6.Linux端執行:startxfce4,啟動桌面系統;
注意:有個問題就是重啟電腦後,再次啟動時會報錯
因為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命令連結
2.將下載的火狐瀏覽器壓縮包,拷貝到/user/bin,並解壓:
tar -zxvf firefox-30.0.tar.bz2
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
<?php
# UserContext.php 指令碼檔案
use Behat\Behat\Context\Context;
use Behat\Mink\Mink;
use Behat\Mink\Session;
use Behat\Mink\Driver\Selenium2Driver;
use Behat\Mink\Driver;
/**
* Defines application features from the specific context.
*/
class UserContext implements Context
{
public $driver;
public $session;
/**
* Initializes context.
*
* Every scenario gets its own context instance.
* You can also pass arbitrary arguments to the
* context constructor through behat.yml.
*/
public function __construct()
{
$caps = array(
'browserName' => '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
2,執行測試用例
vendor/bin/behat --suite=user_features #--suite 指定測試套件(可不寫,執行全部用例)
相關文章
- Rest Webservice 環境搭建流程和例項RESTWeb
- 環境搭建
- windows環境下Django環境搭建WindowsDjango
- react環境搭建React
- LNMP 環境搭建LNMP
- 搭建Java環境Java
- Vagrant 環境搭建
- Flutter環境搭建Flutter
- swoft 環境搭建
- OpenGL 環境搭建
- 搭建gym環境
- 搭建lnmp環境LNMP
- Angular環境搭建Angular
- JDK環境搭建JDK
- keil環境搭建
- Dubbo環境搭建
- mac搭建環境Mac
- FNA 環境搭建
- FNA環境搭建
- Maven 環境搭建Maven
- spark環境搭建Spark
- Hive環境搭建Hive
- centosLAMP環境搭建CentOSSLAMLAMP
- lnmp環境搭建LNMP
- ZooKeeper環境搭建
- lnamp環境搭建
- java 環境 搭建Java
- MAVEN環境搭建Maven
- App環境搭建APP
- gogs環境搭建Go
- Windows環境下的Nginx環境搭建WindowsNginx
- window環境下testlink環境搭建(xammp)
- 以太坊-Win環境下remix環境搭建REM
- 【環境搭建】RocketMQ叢集搭建MQ
- Web 滲透測試入門:環境搭建、流程與實踐Web
- Flutter Engine環境搭建Flutter
- iOS逆向環境搭建iOS
- docker搭建php環境DockerPHP