這一篇來介紹常用的幾個 selenium-cucumber 常用的 API
知道越多已經存在的東西,就不需要再自己造輪子,或是使用很慢的方法來解決現有的問題。
有興趣了解更多的可以到他的 git 文件看到更多他的API
這是個是他的 git 文件
想知道在更多的話就要到他的 lib 看他底層是如何寫的,會發現更多他原本就寫好的 API~
這一次要介紹的幾個常用的API分別是
- is_element_displayed
- enter_text
- clear_text
- click
- scroll_page
- wait
我在這直接寫一個範例進行說明,feature檔就會長這個樣子
Feature: Demo APIs
Scenario: As a normal user I can search somethingb
Given I input somethingB
When I Click search button
Then I scroll to end
我們先看實際執行結果
接下來我們針對每一個Given And When Then的code來解釋
在開始針對某部分的code開始看之前,先看看在 custom_steps.rb 中的程式碼
#custom_steps
require 'selenium-cucumber'
google_page = GOOGLEPAGE.new
Given('I input somethingB') do
navigate_to('https://www.google.com/')
google_page.input_somethinga
google_page.clear_something
google_page.input_somethingb
end
When('I Click search button') do
google_page.click_btn
end
Then('I scroll to end') do
google_page.scroll_end
end
在這裡可以看到 custom_steps 中有用到了許多 GOOGLEPAGE 中的方法,來讓 webdriver 做動作,接著要來看看全部的 GOOGLEPAGE 的 code,如下
#google page
class GOOGLEPAGE
XPATHS = {
btn: '//*[@name="btnK"]',
textbox: '//*[@name="q"]'
}.freeze
def input_somethinga
enter_text(:xpath, 'somethinga', XPATHS[:textbox])
end
def clear_something
clear_text(:xpath, XPATHS[:textbox])
end
def input_somethingb
enter_text(:xpath, 'somethingb', XPATHS[:textbox])
end
def click_btn
is_element_displayed(:xpath, XPATHS[:btn])
click(:xpath, XPATHS[:btn])
end
def scroll_end
scroll_page('end')
wait(1)
end
end
現在來關注一下裡面Code的語法吧
navigate_to('url')
這一個方法就是將你傳到某一個網址,由這一行code可以看到是將我們帶到google的首頁
enter_text(尋找方式, '輸入文字', 'xpath路徑')
這一個方法可以在程式碼中看到我是使用XPATH的尋找方式,在找到的位置輸入somethinga
enter_text(:xpath, 'somethinga', XPATHS[:textbox])
clear_something(尋找方式, 'xpath路徑')
這一個方法一樣的格式,只是少了需要輸入數字,這個方法會幫我們將找到路徑的元素清空
is_element_displayed(尋找方式, 'xpath路徑')
這個方法是為了確認方法是否存在,常常頁面載入完成後,元素還沒出現的可能,所以很常會需要這個方法來確認元素是否出現了
scroll('to')
這個方法是捲動瀏覽器中的捲軸,end是卷到底,top是到最上方,很簡單明瞭
wait(time)
這個方法是為了讓頁面等待時使用,time的單位是秒。
這一次的git url