Test - Ruby + Cucumber 常用的 Selenium-Cucumber Ruby API's 哦哦哦哦哦

這一篇來介紹常用的幾個 selenium-cucumber 常用的 API

知道越多已經存在的東西,就不需要再自己造輪子,或是使用很慢的方法來解決現有的問題。

「we are too busy」的圖片搜尋結果

有興趣了解更多的可以到他的 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

https://github.com/SQZ777/RubyDemoWithGoogle