Selenium IDE的 N個替代方案

Selenium IDE的 N個替代方案

這篇文章主要解決一個問題 — Selenium IDE 是否有地替代方案?

Selenium 3 與 FireFox 的版本更新之後造成 Selenium IDE無法繼續使用

長久停留在舊版本的 Firefox 也不是辦法

因此是否有類似 Selenium IDE 可以達到

  1. 不用寫程式就可以完成自動化測試
  2. 可以將操作的步驟轉成Python 或 Java 的程式碼
  3. 必要時還可以修改相關的操作步驟
  4. 可以執行 Firefox 與 Chrome

筆者推薦n個方案

  • 一個是開源 Robort Framework 可以彈性擴充做 Web UI 測試也可以結合Appium進行手機自動化測試, 還可以進行接口測試
  • 另外一個是傻瓜版 Silk WebDriver 同樣是免費, 缺點是使用時候需要連上網路才可以使用
  • SideeX http://sideex.org/
  • Katalon Recorder (Selenium IDE for Chrome)
  • Selenium IDE for Chrome

這篇文章主要介紹的是第二種傻瓜版的方案 Silk WebDriver操作與下載方式

工具下載 https://build.microfocuscloud.com/download?product=silkwebdriver

使用前需要有一個登入帳號(可以免費創見) https://build.microfocuscloud.com/registration?product=webdriver

安裝完之後啟動並且登入

1. 錄製一個新的操作

選擇要啟動的瀏覽器 > 目標網址 www.baidu.com > OK

 

2. 操作功能介面說明

啟動瀏覽器到了指定網頁之後

可以看到右邊的工作區 Silk WebDriver

針對網頁上的搜尋點選右鍵(下圖1) 可以進一步選擇我們需要的操作

下圖2: 可以選擇操作

下圖3: 選擇要驗證的動作

 

3. 驗證網頁元件

如何驗證網頁元件呢?

只需要在 “百度一下”的按鈕按下右鍵

點選右下角的圖片符號 (下圖中2)

 

 

驗證屬性

出現驗證屬性視窗之後, 進一步選擇要驗證的方式

例如:我們想要驗證該按鈕文字是否為 “百度一下”

 

輸入 Test

接著我們到搜尋文字框按右鍵, 輸入 test

驗證搜尋結果

同樣方式, 在搜尋結果的文字連結上按下右鍵 > 圖片驗證 > 選擇 ‘test_百度翻譯’

 

完成錄製

 

產生Python程式碼

透過上方的語言選擇 > 右上角的儲存

 

 

儲存錄製腳本

錄製的腳本儲存可以透過工作區最下面的停止儲存

儲存的附檔名為SWD

該文件可以用一般的編輯器進行修改

備註:儲存檔案按鈕按下時, 視窗反映出現的時間會有一點久, 耐心等待下

產生的腳本, 附檔名為SWD

{
  "version" : 1,
  "language" : "Python",
  "framework" : "unittest",
  "browser" : "Chrome",
  "connectionString" : "",
  "actions" : [ {
    "commonClass" : "WebDriver",
    "actionName" : "Get",
    "parameters" : {
      "url" : "http://www.baidu.com"
    },
    "locatorInfos" : [ ]
  }, {
    "commonClass" : "WebElement",
    "actionName" : "Verification",
    "parameters" : [ {
      "name" : "defaultValue",
      "commonDataType" : "string",
      "isOptional" : true,
      "defaultValue" : "\"\"",
      "value" : "\"百度一下\""
    } ],
    "locatorInfos" : [ {
      "className" : "WebElement",
      "isDirectChild" : false,
      "attributes" : {
        "id" : "su",
        "className" : "s_btn",
        "xpath" : "//input[@id=\"su\"]"
      }
    } ]
  }, {
    "commonClass" : "WebElement",
    "actionName" : "SendKeys",
    "parameters" : {
      "keys" : "test"
    },
    "locatorInfos" : [ {
      "className" : "WebElement",
      "isDirectChild" : false,
      "attributes" : {
        "id" : "kw",
        "name" : "wd",
        "className" : "s_ipt",
        "xpath" : "//input[@id=\"kw\"]"
      }
    } ]
  }, {
    "commonClass" : "WebElement",
    "actionName" : "Verification",
    "parameters" : [ {
      "name" : "Text",
      "commonDataType" : "string",
      "isOptional" : true,
      "defaultValue" : "\"\"",
      "value" : "\"test_百度翻译\""
    } ],
    "locatorInfos" : [ {
      "className" : "WebElement",
      "isDirectChild" : false,
      "attributes" : {
        "linkText" : "test_百度翻译",
        "xpath" : "//a[text()=\"_百度翻译\"]"
      }
    } ]
  } ]
}

自動產生的Python

# coding=utf-8
import unittest
from unittest import TestCase
from selenium import webdriver


class Baidu Search(TestCase):

    driver = None

    def setUp(self):
        driver_path = "chromedriver.exe"
        # Add the driver directory "D:\Chrome\2.34" to the PATH environment variable on your machine
        # OR uncomment the following line:
        # driver_path = "D:\\Silk WebDriver\\ng\\WebDriversSWD\\Windows\\Chrome\\2.34\\chromedriver.exe"
        self.driver = webdriver.Chrome(executable_path=driver_path)
        self.driver.implicitly_wait(5)

    def test_my_test_case_name(self):
        self.driver.get("http://www.baidu.com")
        su = self.driver.find_element_by_id("su")
        self.assertEqual(su.get_attribute("defaultValue"), "百度一下")
        self.driver.find_element_by_id("kw").send_keys("test")
        test = self.driver.find_element_by_link_text("test_百度翻译")
        self.assertEqual(test.text, "test_百度翻译")

    def tearDown(self):
        if self.driver is not None:
            self.driver.quit()

if __name__ == "__main__":
    unittest.main()

 

 

Leave a Reply

Your email address will not be published.