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

[pastacode lang=”python” manual=”%7B%0A%20%20%22version%22%20%3A%201%2C%0A%20%20%22language%22%20%3A%20%22Python%22%2C%0A%20%20%22framework%22%20%3A%20%22unittest%22%2C%0A%20%20%22browser%22%20%3A%20%22Chrome%22%2C%0A%20%20%22connectionString%22%20%3A%20%22%22%2C%0A%20%20%22actions%22%20%3A%20%5B%20%7B%0A%20%20%20%20%22commonClass%22%20%3A%20%22WebDriver%22%2C%0A%20%20%20%20%22actionName%22%20%3A%20%22Get%22%2C%0A%20%20%20%20%22parameters%22%20%3A%20%7B%0A%20%20%20%20%20%20%22url%22%20%3A%20%22http%3A%2F%2Fwww.baidu.com%22%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22locatorInfos%22%20%3A%20%5B%20%5D%0A%20%20%7D%2C%20%7B%0A%20%20%20%20%22commonClass%22%20%3A%20%22WebElement%22%2C%0A%20%20%20%20%22actionName%22%20%3A%20%22Verification%22%2C%0A%20%20%20%20%22parameters%22%20%3A%20%5B%20%7B%0A%20%20%20%20%20%20%22name%22%20%3A%20%22defaultValue%22%2C%0A%20%20%20%20%20%20%22commonDataType%22%20%3A%20%22string%22%2C%0A%20%20%20%20%20%20%22isOptional%22%20%3A%20true%2C%0A%20%20%20%20%20%20%22defaultValue%22%20%3A%20%22%5C%22%5C%22%22%2C%0A%20%20%20%20%20%20%22value%22%20%3A%20%22%5C%22%E7%99%BE%E5%BA%A6%E4%B8%80%E4%B8%8B%5C%22%22%0A%20%20%20%20%7D%20%5D%2C%0A%20%20%20%20%22locatorInfos%22%20%3A%20%5B%20%7B%0A%20%20%20%20%20%20%22className%22%20%3A%20%22WebElement%22%2C%0A%20%20%20%20%20%20%22isDirectChild%22%20%3A%20false%2C%0A%20%20%20%20%20%20%22attributes%22%20%3A%20%7B%0A%20%20%20%20%20%20%20%20%22id%22%20%3A%20%22su%22%2C%0A%20%20%20%20%20%20%20%20%22className%22%20%3A%20%22s_btn%22%2C%0A%20%20%20%20%20%20%20%20%22xpath%22%20%3A%20%22%2F%2Finput%5B%40id%3D%5C%22su%5C%22%5D%22%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20%5D%0A%20%20%7D%2C%20%7B%0A%20%20%20%20%22commonClass%22%20%3A%20%22WebElement%22%2C%0A%20%20%20%20%22actionName%22%20%3A%20%22SendKeys%22%2C%0A%20%20%20%20%22parameters%22%20%3A%20%7B%0A%20%20%20%20%20%20%22keys%22%20%3A%20%22test%22%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22locatorInfos%22%20%3A%20%5B%20%7B%0A%20%20%20%20%20%20%22className%22%20%3A%20%22WebElement%22%2C%0A%20%20%20%20%20%20%22isDirectChild%22%20%3A%20false%2C%0A%20%20%20%20%20%20%22attributes%22%20%3A%20%7B%0A%20%20%20%20%20%20%20%20%22id%22%20%3A%20%22kw%22%2C%0A%20%20%20%20%20%20%20%20%22name%22%20%3A%20%22wd%22%2C%0A%20%20%20%20%20%20%20%20%22className%22%20%3A%20%22s_ipt%22%2C%0A%20%20%20%20%20%20%20%20%22xpath%22%20%3A%20%22%2F%2Finput%5B%40id%3D%5C%22kw%5C%22%5D%22%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20%5D%0A%20%20%7D%2C%20%7B%0A%20%20%20%20%22commonClass%22%20%3A%20%22WebElement%22%2C%0A%20%20%20%20%22actionName%22%20%3A%20%22Verification%22%2C%0A%20%20%20%20%22parameters%22%20%3A%20%5B%20%7B%0A%20%20%20%20%20%20%22name%22%20%3A%20%22Text%22%2C%0A%20%20%20%20%20%20%22commonDataType%22%20%3A%20%22string%22%2C%0A%20%20%20%20%20%20%22isOptional%22%20%3A%20true%2C%0A%20%20%20%20%20%20%22defaultValue%22%20%3A%20%22%5C%22%5C%22%22%2C%0A%20%20%20%20%20%20%22value%22%20%3A%20%22%5C%22test_%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91%5C%22%22%0A%20%20%20%20%7D%20%5D%2C%0A%20%20%20%20%22locatorInfos%22%20%3A%20%5B%20%7B%0A%20%20%20%20%20%20%22className%22%20%3A%20%22WebElement%22%2C%0A%20%20%20%20%20%20%22isDirectChild%22%20%3A%20false%2C%0A%20%20%20%20%20%20%22attributes%22%20%3A%20%7B%0A%20%20%20%20%20%20%20%20%22linkText%22%20%3A%20%22test_%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91%22%2C%0A%20%20%20%20%20%20%20%20%22xpath%22%20%3A%20%22%2F%2Fa%5Btext()%3D%5C%22_%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91%5C%22%5D%22%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20%5D%0A%20%20%7D%20%5D%0A%7D” message=”” highlight=”” provider=”manual”/]

自動產生的Python

[pastacode lang=”python” manual=”%23%20coding%3Dutf-8%0Aimport%20unittest%0Afrom%20unittest%20import%20TestCase%0Afrom%20selenium%20import%20webdriver%0A%0A%0Aclass%20Baidu%20Search(TestCase)%3A%0A%0A%20%20%20%20driver%20%3D%20None%0A%0A%20%20%20%20def%20setUp(self)%3A%0A%20%20%20%20%20%20%20%20driver_path%20%3D%20%22chromedriver.exe%22%0A%20%20%20%20%20%20%20%20%23%20Add%20the%20driver%20directory%20%22D%3A%5CChrome%5C2.34%22%20to%20the%20PATH%20environment%20variable%20on%20your%20machine%0A%20%20%20%20%20%20%20%20%23%20OR%20uncomment%20the%20following%20line%3A%0A%20%20%20%20%20%20%20%20%23%20driver_path%20%3D%20%22D%3A%5C%5CSilk%20WebDriver%5C%5Cng%5C%5CWebDriversSWD%5C%5CWindows%5C%5CChrome%5C%5C2.34%5C%5Cchromedriver.exe%22%0A%20%20%20%20%20%20%20%20self.driver%20%3D%20webdriver.Chrome(executable_path%3Ddriver_path)%0A%20%20%20%20%20%20%20%20self.driver.implicitly_wait(5)%0A%0A%20%20%20%20def%20test_my_test_case_name(self)%3A%0A%20%20%20%20%20%20%20%20self.driver.get(%22http%3A%2F%2Fwww.baidu.com%22)%0A%20%20%20%20%20%20%20%20su%20%3D%20self.driver.find_element_by_id(%22su%22)%0A%20%20%20%20%20%20%20%20self.assertEqual(su.get_attribute(%22defaultValue%22)%2C%20%22%E7%99%BE%E5%BA%A6%E4%B8%80%E4%B8%8B%22)%0A%20%20%20%20%20%20%20%20self.driver.find_element_by_id(%22kw%22).send_keys(%22test%22)%0A%20%20%20%20%20%20%20%20test%20%3D%20self.driver.find_element_by_link_text(%22test_%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91%22)%0A%20%20%20%20%20%20%20%20self.assertEqual(test.text%2C%20%22test_%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91%22)%0A%0A%20%20%20%20def%20tearDown(self)%3A%0A%20%20%20%20%20%20%20%20if%20self.driver%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20self.driver.quit()%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20unittest.main()%0A” message=”” highlight=”” provider=”manual”/]

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *