fasttest-selenium 關鍵字驅動自動化工具

Jodeee發表於2020-12-20

框架介紹

fasttest-selenium 是由Python語言開發的WEB端自動化框架,通過yaml編寫相應的action即可呼叫Selenium API完成自動化測試
文件介紹

用例

Action

module: selenium
skip: false
description: action相關
steps:
- openUrl('https://www.baidu.com')
# 檢查元素
- check('id=su')
# 單擊元素
- click('id=su')
# 右擊元素
- contextClick('id=su')
# 雙擊元素
- doubleClick('class=hot-refresh-text')
# 按住滑鼠左鍵
- holdClick('class=hot-refresh-text')

# 滑鼠拖放
- click('xpath=//*[@id="s-top-left"]/a[1]')
- ${all_handle} = $.getWindowHandles()
- switchToWindow(${all_handle}[-1])
- dragDrop('xpath=//*[@id="sbox"]/tbody/tr/td[1]/div[1]/a/img','id=s_btn_wr')
# 拖動元素到某個位置
- dragDropByOffset('xpath=//*[@id="sbox"]/tbody/tr/td[1]/div[1]/a/img',10,10)
- switchToWindow(${all_handle}[0])
# 滑鼠從當前位置移動到某個座標
- moveByOffset(10,10)
# 滑鼠移動到某個元素上
- moveToElement('xpath=//*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]')
# 移動到距某個元素(左上角座標)多少距離的位置
- moveToElementWithOffset('xpath=//*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]',10,20)
# 輸入
- sendKeys('name=wd','te')
- sendKeys('name=wd','Keys.COMMAND', 'v')
# 清除
- clear('name=wd')
# 截圖
- ${screenshot} = $.saveScreenshot('id=su', 'test.png')
# 執行JS
- ${js} = "window.open('http://www.taobao.com')"
- executeScript(${js})

Element

module: selenium
skip: false
description: 元素相關操作
steps:
- openUrl('https://www.baidu.com')
# 獲取單個元素 id|name|class|tag_name|link_text|partial_link_text|xpath|css_selector
- ${element_id} = $.getElement('id=su')
- ${element_name} = $.getElement('name=f')
- ${element_class} = $.getElement('class=s_ipt')
- ${element_tag_name} = $.getElement('tag_name=form')
- ${element_link_text} = $.getElement('link_text=新聞')
- ${element_partial_link_text} = $.getElement('partial_link_text=新')
- ${element_xpath} = $.getElement('xpath=//*[@id="su"]')
- ${element_css_selector} = $.getElement('css_selector=[name="wd"]')

# 獲取一組元素
- ${elements_class} = $.getElements('class=title-content-title')

# 判斷元素是否選中
- ${is_selected} = $.isSelected(${element_id})
# 判斷元素是否顯示
- ${is_displayed} = $.isDisplayed(${element_id})
# 判斷元素是否可使用
- ${is_enabled} = $.isEnabled(${element_id})

# 獲取元素大小
- ${size} = $.getSize(${element_id})
# 獲取元素座標
- ${location} = $.getLocation(${element_id})
# 獲取元素位置大小
- ${rect} = $.getRect(${element_id})

# 獲取元素tag
- ${tag_name} = $.getTagName(${element_id})
# 獲取元素文案
- ${text} = $.getText(${element_id})
# 獲取元素屬性
- ${attribute} = $.getAttribute(${element_id}, 'value')
# 獲取元素css
- ${css} = $.getCssProperty(${element_id}, 'height')

Browser

module: selenium
skip: false
description: 瀏覽器相關操作
steps:
# 開啟URL
- openUrl('https://www.baidu.com')
# 獲取瀏覽器名字
- ${getName} = $.getName()
# 視窗最大化
- maxWindow()
# 視窗最小化
- minWindow()
# 全屏視窗
- fullscreenWindow()
# 設定視窗大小
- setWindowSize(2000,1500)
# 設定視窗位置
- setWindowPosition(10,30)
# 獲取視窗大小
- ${w_size} = $.getWindowSize()
# 獲取視窗位置
- ${w_position} = $.getWindowPosition()

- click('xpath=//*[@id="s-top-left"]/a[1]')
# 獲取當前視窗控制程式碼
- ${handle} = $.getCurrentWindowHandle()
# 獲取所有視窗控制程式碼
- ${all_handle} = $.getWindowHandles()
- for ${handle} in ${all_handle}:
# 切換視窗控制程式碼
- switchToWindow(${handle})
- ${title} = $.getTitle()
- if ${title} == '百度新聞——海量中文資訊平臺':
- break

# 獲取當前視窗標題
- ${title} = $.getTitle()
# 獲取當前視窗url
- ${current_url} = $.getCurrentUrl()

- click('xpath=//*[@id="channel-all"]/div/ul/li[2]')
- click('xpath=//*[@id="channel-all"]/div/ul/li[3]')
# 後退
- back()
# 前進
- forward()
# 重新整理
- refresh()
module: selenium
skip: false
description: cookies相關
steps:
- openUrl('https://www.baidu.com')
# 獲取所有cookies
- ${cookies} = $.getCookies()
# 獲取指定cookie
- ${cookie} = $.getCookie('BAIDUID')
# 刪除指定cookie
- deleteCookie('BAIDUID')
# 刪除所有cookie
- deleteAllCookies()
# 新增指定cookie
- ${add_cookie} = {'name':'ADDCOOKIE','value':'123adc'}
- addCookie(${add_cookie})
- ${cookies} = $.getCookies()

Common

module: common
skip: false
description: 公共關鍵字
steps:
# 科學運算
- ${test1} = $.id(1+2*3)
- ${test2} = $.id('test'+' '+'common')
# 設定全域性變數
- setVar('test3', True)
# 獲取全域性變數
- ${test3} = $.getVar('test3')
# 休眠
- sleep(5)

- openUrl('https://www.baidu.com')
- ${elements} = $.getElements('class=title-content-title')
# 獲取陣列長度
- ${len} = $.getLen(${elements})
# while 迴圈
- while ${len}:
- ${len} = $.id(${len}-1)
- ${element} = ${elements}[${len}]
- ${text} = $.getText(${element})
# if elif else
- if ${len} == 3:
# 斷言
- assert ${len} == 3
elif ${text} == '美國將對更多中國公民實施簽證限制':
- break
else:
- sleep(1)

# call 公共方法
- call common_action(${elements}[0])

# 用指令碼無返回值-呼叫selenium api完成複雜動作
- keyDown(${elements}[0], '這是一條測試資料')
- sendKeys('name=wd','Keys.COMMAND', 'v')

# 呼叫指令碼有返回值
- ${text} = getText('這是一條測試資料')

End

相關文章