- 元素定位方式
- Browser
- 打开网页(openUrl)
- 关闭标签页或窗口(close)
- 后退(back)
- 前进(forward)
- 刷新(refresh)
- 窗口最大化(maxWindow)
- 窗口最小化(minWindow)
- 窗口全屏(fullscreenWindow)
- 设置窗口大小(setWindowSize)
- 设置窗口坐标(setWindowPosition)
- 获取窗口大小($.getWindowSize)
- 获取窗口坐标($.getWindowPosition)
- 获取当前窗口句柄($.getCurrentWindowHandle)
- 获取所有窗口句柄($.getWindowHandles)
- 切换窗口句柄(switchToWindow)
- 获取窗口标题($.getTitle)
- 获取窗口URL($.getCurrentUrl)
- 获取浏览器名称($.getName)
- Action
- Element
- 等待元素可见(queryDisplayed)
- 等待元素不可见(queryNotDisplayed)
- 获取单个元素($.getElement)
- 获取多个元素($.getElements)
- 判断元素是否选中($.isSelected)
- 判断元素是否显示($.isDisplayed)
- 判断元素是否可用($.isEnabled)
- 判断元素是否存在($.isExist)
- 判断元素是否不存在($.isNotExist)
- 获取元素大小($.getSize)
- 获取元素坐标($.getLocation)
- 获取元素位置大小($.getRect)
- 获取元素标签($.getTagName)
- 获取元素文案($.getText)
- 获取元素属性($.getAttribute)
- 获取元素CSS($.getCssProperty)
- Cookie
元素定位方式
- 元素定位方法:selenium有八种元素定位方式,为了简化步骤描述,用例中按照
type=element
的方式即可定位到相关元素- 元素定位方式:id、name、class、tag_name、link_text、partial_link_text、xpath、css_selector
- 例:点击百度按钮 click(“id=su”)
Browser
打开网页(openUrl)
openUrl
打开一个网页,参数: URL
- ${url} = 'https://www.baidu.com'
- openUrl(${url})
# 或者
- openUrl('https://www.baidu.com')
对应Selenium API :
driver = webdriver.Chrome()
driver.get(url)
关闭标签页或窗口(close)
close
关闭当前标签页或窗口
- openUrl('https://www.baidu.com')
- close()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
driver.close()
后退(back)
back
退回到上一页
- back()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_xpath('//*[@id="s-top-left"]/a[1]').click()
driver.back()
前进(forward)
forward
前进到下一页
- forward()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_xpath('//*[@id="s-top-left"]/a[1]').click()
driver.back()
driver.forward()
刷新(refresh)
refresh
刷新当前页面
- refresh()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
driver.refresh()
窗口最大化(maxWindow)
maxWindow
窗口最大化
- maxWindow()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
driver.maximize_window()
窗口最小化(minWindow)
minWindow
窗口最小化
- minWindow()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
driver.minimize_window()
窗口全屏(fullscreenWindow)
fullscreenWindow
窗口全屏
- fullscreenWindow()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
driver.fullscreen_window()
设置窗口大小(setWindowSize)
setWindowSize
设置窗口大小,参数: width
, height
- setWindowSize(3000,2000)
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
driver.set_window_size(3000,2000)
设置窗口坐标(setWindowPosition)
setWindowPosition
设置窗口起始坐标,参数: x
, y
- setWindowPosition(10,20)
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
driver.set_window_position(10,20)
获取窗口大小($.getWindowSize)
$.getWindowSize
获取窗口大小
- ${w_size} = $.getWindowSize()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
w_size = driver.get_window_size()
获取窗口坐标($.getWindowPosition)
$.getWindowPosition
获取窗口起始坐标
- ${w_position} = $.getWindowPosition()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
w_position = driver.get_window_position()
获取当前窗口句柄($.getCurrentWindowHandle)
$.getCurrentWindowHandle
获取当前窗口句柄
- ${handle} = $.getCurrentWindowHandle()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
handle = driver.current_window_handle
获取所有窗口句柄($.getWindowHandles)
$.getWindowHandles
获取所有窗口句柄
- ${handles} = $.getWindowHandles()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
handles = driver.window_handles
切换窗口句柄(switchToWindow)
switchToWindow
切换窗口句柄,参数: handle
获取所有的窗口句柄是无序的,建议用for循环切换窗口句柄
- ${all_handle} = $.getWindowHandles()
- for ${handle} in ${all_handle}:
# 切换窗口句柄
- switchToWindow(${handle})
- ${title} = $.getTitle()
- if ${title} == '百度新闻——海量中文资讯平台':
- break
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
handles = driver.window_handles
for handle in handles:
# 切换窗口句柄
switch_to.window(handle)
title = driver.title
if title == '百度新闻——海量中文资讯平台':
break
获取窗口标题($.getTitle)
$.getTitle
获取窗口标题
- ${title} = $.getTitle()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
title = driver.title
获取窗口URL($.getCurrentUrl)
$.getCurrentUrl
获取窗口URL
- ${title} = $.getCurrentUrl()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
title = driver.current_url
获取浏览器名称($.getName)
$.getName
获取浏览器名称
- ${name} = $.getName()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
title = driver.name
Action
单击(click)
click
鼠标左键单击,参数: element
- click('id=su')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element = find_element_by_id('su')
element.click()
右击(contextClick)
contextClick
鼠标右键单击,参数: element
- contextClick('id=su')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element = find_element_by_id('su')
ActionChains(driver).context_click(element).perform()
双击(doubleClick)
doubleClick
鼠标左键双击,参数: element
- doubleClick('id=su')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element = find_element_by_id('su')
ActionChains(driver).double_click(element).perform()
长按(holdClick)
holdClick
长按鼠标左键不放,参数: element
- holdClick('id=su')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element = find_element_by_id('su')
ActionChains(driver).click_and_hold(element).perform()
拖放元素到另一个元素位置(dragDrop)
dragDrop
拖放元素到另一个元素位置,参数: element
,target
- dragDrop('xpath=//*[@id="sbox"]/tbody/tr/td[1]/div[1]/a/img','id=s_btn_wr')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element = find_element_by_xpath('//*[@id="sbox"]/tbody/tr/td[1]/div[1]/a/img')
target = find_element_by_id('s_btn_wr')
ActionChains(driver).drag_and_drop(element, target).perform()
拖放元素到某个位置(dragDropByOffset)
dragDropByOffset
拖放元素到某个位置,参数: element
, x
, y
- dragDropByOffset('xpath=//*[@id="sbox"]/tbody/tr/td[1]/div[1]/a/img',10,10)
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element = find_element_by_xpath('//*[@id="sbox"]/tbody/tr/td[1]/div[1]/a/img')
ActionChains(driver).drag_and_drop_by_offset(element, 10, 10).perform()
鼠标移动到某个位置(moveByOffset)
moveByOffset
鼠标从当前位置移动到某个坐标,参数:x
, y
- moveByOffset(10,10)
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
ActionChains(driver).move_by_offset(10, 10).perform()
鼠标移动到某个元素(moveToElement)
moveToElement
鼠标移动到某个元素上,参数: element
- moveToElement('xpath=//*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element = find_element_by_xpath('//*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]')
ActionChains(driver).move_to_element(element).perform()
鼠标移动到距某个元素多少距离的位置(moveToElementWithOffset)
moveToElementWithOffset
鼠标移动到距某个元素(左上角坐标)多少距离的位置,参数: element
, x
, y
- moveToElementWithOffset('id=su',10,20)
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element = find_element_by_id('su')
ActionChains(driver).move_to_element_with_offset(element, 10, 20).perform()
输入(sendKeys)
sendKeys
输入文案,参数: element
, Keys(可选)
, text
- sendKeys('name=wd','测试文案') # 普通输入
# 复制粘贴
- sendKeys('name=wd','Keys.CONTROL', 'c') # control + c
- sendKeys('name=wd','Keys.CONTROL', 'v') # control + v
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element = find_element_by_name('wd')
element.send_keys('测试文案')
# 复制粘贴
element.send_keys(Keys.CONTROL, 'c')
element.send_keys(Keys.CONTROL, 'v')
清除(clear)
clear
清除输入框文案、元素选中状态
- clear('name=wd')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element = find_element_by_name('wd')
element.clear()
执行JS(executeScript)
executeScript
执行JS代码,参数: script
- ${js} = "window.open('http://www.taobao.com')"
- executeScript(${js})
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
js = "window.open('http://www.taobao.com')"
driver.execute_script(js)
截图($.saveScreenshot)
$.saveScreenshot
对屏幕或者元素截图,参数: element(可选,如果为空则截全屏)
, name
# 对元素截图,返回图片路径
- ${path} = $.saveScreenshot('id=su', 'biadu.png')
# 全屏截图,返回图片路径
- ${path} = $.saveScreenshot('biadu.png')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element = find_element_by_id('su')
# 元素截图
element.screenshot(path)
# 全屏截图
driver.save_screenshot(path)
Element
等待元素可见(queryDisplayed)
queryDisplayed
等待元素可见,参数: element
- queryDisplayed('id=su')
等待元素不可见(queryNotDisplayed)
queryNotDisplayed
等待元素不可见,参数: element
- queryNotDisplayed('id=su')
获取单个元素($.getElement)
$.getElement
获取单个元素,参数: element
# 获取单个元素 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"]')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
'''
by = Dict({
'id': By.ID,
'name': By.NAME,
'xpath': By.XPATH,
'class': By.CLASS_NAME,
'tag_name': By.TAG_NAME,
'link_text': By.LINK_TEXT,
'css_selector': By.CSS_SELECTOR,
'partial_link_text': By.PARTIAL_LINK_TEXT,
})
'''
element_id = find_element(By.ID, 'su')
获取多个元素($.getElements)
$.getElements
获取单个元素,参数: element
# 获取多个元素 id|name|class|tag_name|link_text|partial_link_text|xpath|css_selector
- ${elements_class} = $.getElements('class=title-content-title')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
elements_class = find_elements(By.CLASS_NAME, 'title-content-title')
判断元素是否选中($.isSelected)
$.isSelected
判断元素是否选中,参数: element
- ${element_id} = $.getElement('id=su')
- ${is_selected} = $.isSelected(${element_id})
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element_id = find_element(By.ID, 'su')
is_selected = element_id.is_selected()
判断元素是否显示($.isDisplayed)
$.isDisplayed
判断元素是否显示,参数: element
- ${element_id} = $.getElement('id=su')
- ${is_displayed} = $.isDisplayed(${element_id})
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element_id = find_element(By.ID, 'su')
is_displayed = .is_displayed()
判断元素是否可用($.isEnabled)
$.isEnabled
判断元素是否可用,参数: element
- ${element_id} = $.getElement('id=su')
- ${is_enabled} = $.isEnabled(${element_id})
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element_id = find_element(By.ID, 'su')
is_enabled = element_id.is_enabled()
判断元素是否存在($.isExist)
$.isExist
判断元素是否存在,参数: element
- ${element_id} = $.isExist('id=su')
- if ${element_id}:
- sleep(1)
判断元素是否不存在($.isNotExist)
$.isNotExist
判断元素是否不存在,参数: element
- ${element_id} = $.isNotExist('id=su')
- if ${element_id}:
- sleep(1)
获取元素大小($.getSize)
$.getSize
判断元素是否选中,参数: element
- ${element_id} = $.getElement('id=su')
- ${size} = $.getSize(${element_id})
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element_id = find_element(By.ID, 'su')
size = element_id.size
获取元素坐标($.getLocation)
$.getLocation
获取元素坐标,参数: element
- ${element_id} = $.getElement('id=su')
- ${location} = $.getLocation(${element_id})
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element_id = find_element(By.ID, 'su')
location = element_id.location
获取元素位置大小($.getRect)
$.getRect
获取元素位置大小,参数: element
- ${element_id} = $.getElement('id=su')
- ${rect} = $.getRect(${element_id})
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element_id = find_element(By.ID, 'su')
rect = element_id.rect
获取元素标签($.getTagName)
$.getTagName
获取元素标签,参数: element
- ${element_id} = $.getElement('id=su')
- ${tag} = $.getTagName(${element_id})
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element_id = find_element(By.ID, 'su')
tag = element_id.tag_name
获取元素文案($.getText)
$.getText
获取元素位置文案,参数: element
- ${element_id} = $.getElement('id=su')
- ${text} = $.getText(${element_id})
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element_id = find_element(By.ID, 'su')
text = element_id.text
获取元素属性($.getAttribute)
$.getAttribute
获取元素位置属性,参数: element
, attribute
- ${element_id} = $.getElement('id=su')
- ${attribute} = $.getAttribute(${element_id}, 'value')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element_id = find_element(By.ID, 'su')
attribute = element.get_attribute('value')
获取元素CSS($.getCssProperty)
$.getCssProperty
获取元素CSS,参数: element
, css
- ${element_id} = $.getElement('id=su')
- ${css} = $.getCssProperty(${element_id}, 'height')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
element_id = find_element(By.ID, 'su')
css = element_id.value_of_css_property('height')
Cookie
获取所有Cookie($.getCookies)
$.getCookies
获取所有Cookie
- ${cookies} = $.getCookies()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
cookies = driver.get_cookies()
获取指定Cookie($.getCookie)
$.getCookie
获取指定Cookie,参数: name
- ${cookie} = $.getCookie('BAIDUID')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
cookie = driver.get_cookie('BAIDUID')
删除指定Cookie(deleteCookie)
deleteCookie
删除指定Cookie,参数: name
- deleteCookie('BAIDUID')
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
driver.delete_cookie('BAIDUID')
删除所有Cookie(deleteAllCookies)
deleteAllCookies
删除所有Cookie
- deleteAllCookies()
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
driver.delete_all_cookies()
添加指定Cookie(addCookie)
addCookie
添加指定Cookie,参数: cookie
- ${add_cookie} = {'name':'ADDCOOKIE','value':'123adc'}
- addCookie(${add_cookie})
对应Selenium API:
driver = webdriver.Chrome()
driver.get(url)
add_cookie = {'name':'ADDCOOKIE','value':'123adc'}
driver.add_cookie(add_cookie)