添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

上篇介紹了 selenium 腳本,接下來要介紹要怎麼整合 selenium 到 Jenkins CI/CD 流程之中,由於我們的 Jenkins Server 是架設在 Linux 環境,Linux 環境沒有安裝桌面程式,所以我們需要啟動一個 selenium/standalone-chrome Container,之後 selenium 腳本會跑在 這個Container 上面.

Jenkins 整合 Selenium 測試

下載 docker selenium ,並執行Container ,開始 4444 port

docker run -d -p 4444:4444 --shm-size=2g selenium/standalone-chrome:3.14.0-iron
docker ps -a

開啟網頁 console

http://localhost:4444/wd/hub/static/resource/hub.html

修改 selenium 連結到 Remote Drive 官方範例

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
driver = webdriver.Remote(
   command_executor='http://127.0.0.1:4444/wd/hub',
   desired_capabilities=DesiredCapabilities.CHROME)
driver = webdriver.Remote(
   command_executor='http://127.0.0.1:4444/wd/hub',
   desired_capabilities=DesiredCapabilities.OPERA)
driver = webdriver.Remote(
   command_executor='http://127.0.0.1:4444/wd/hub',
   desired_capabilities=DesiredCapabilities.HTMLUNITWITHJS)

修改 selenium 腳本 vim test_selenium.py

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class GoogleTestCase(unittest.TestCase):
    def setUp(self):
        # self.browser = webdriver.Firefox()
        # 主要是設定 webdirver remote
        self.browser = webdriver.Remote(
            command_executor='http://localhost:4444/wd/hub',
            desired_capabilities=DesiredCapabilities.CHROME)
        # self.addCleanup(self.browser.quit)
    def testPageTitle(self):
        self.browser.get('http://www.google.com')
        self.assertIn('Google', self.browser.title)
    def testYahoo(self):
        self.browser.get('http://www.yahoo.com')
        assert 'Yahoo' in self.browser.title
        elem = self.browser.find_element_by_name('p')  # Find the search box
        elem.send_keys('seleniumhq' + Keys.RETURN)
    def tearDown(self):
        self.browser.quit()
if __name__ == '__main__':
    unittest.main(verbosity=2)
python test_selenium.py

在實作的過程之中,有一些進步的方向,可以使用 selenium grid 架構來提昇測試多種不同的瀏覽器,並且這邊還少了錯誤回報機制,如果測試有問題的時候可以截圖回傳到 Jenkins 來,方便測試人員查看.

selenium-python
/docker-selenium
seleniumHQ