元素定位方式

  1. 元素定位方法:selenium有八种元素定位方式,为了简化步骤描述,用例中按照 type=element 的方式即可定位到相关元素
    1. 元素定位方式:id、name、class、tag_name、link_text、partial_link_text、xpath、css_selector
    2. 例:点击百度按钮 click(“id=su”)

image.png

Browser

打开网页(openUrl)

openUrl 打开一个网页,参数: URL

  1. - ${url} = 'https://www.baidu.com'
  2. - openUrl(${url})
  3. # 或者
  4. - 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 设置窗口大小,参数: widthheight

- setWindowSize(3000,2000)

对应Selenium API:

driver = webdriver.Chrome()
driver.get(url)
driver.set_window_size(3000,2000)

设置窗口坐标(setWindowPosition)

setWindowPosition 设置窗口起始坐标,参数: xy

- 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 拖放元素到另一个元素位置,参数: elementtarget

- 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 拖放元素到某个位置,参数: elementxy

- 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 鼠标从当前位置移动到某个坐标,参数:xy

- 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 鼠标移动到距某个元素(左上角坐标)多少距离的位置,参数: elementxy

- 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 输入文案,参数: elementKeys(可选)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 获取元素位置属性,参数: elementattribute

- ${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,参数: elementcss

- ${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)