markdown Selenium Webdriver CheatSheet
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown Selenium Webdriver CheatSheet相关的知识,希望对你有一定的参考价值。
### API workthough
1. Open a browser
# start an instance of firefox with selenium-webdriver
driver = Selenium::WebDriver.for :firefox
# :chrome -> chrome
# :ie -> iexplore
* Go to a specified URL
driver.get 'http://google.com'
driver.navigate.to 'http://google.com'
`NOTE` -- the WebDriver may not wait for the page to load, you'd better using explicit and implicit waits.
* Locating Elements
* `find_element` -- Find the first element matching the given arguments.
* `find_elements` -- Find all elements matching the given arguments
* By ID
# example html
# <input id="q">...</input>
element = driver.find_element(:id, "q")
* By Class Name
# example html
# <div class="highlight-java" style="display: none; ">...</div>
element = driver.find_element(:class, 'highlight-java')
# or
element = driver.find_element(:class_name, 'highlight-java')
* By Tag Name
# example html
# <div class="highlight-java" style="display: none; ">...</div>
element = driver.find_element(:tag_name, 'div')
* By Name
# example html
# <input id="q" name='search' type='text'>…</input>
element = driver.find_element(:name, 'search')
* By Link Text
# example html
# <a href="http://www.google.com/search?q=cheese">cheese</a>
element = driver.find_element(:link, 'cheese')
# or
element = driver.find_element(:link_text, 'cheese')
* By Partial Link Text
# example html
# <a href="http://www.google.com/search?q=cheese">search for cheese</a>
element = driver.find_element(:partial_link_text, 'cheese')
* By XPath
# example html
# <ul class="dropdown-menu">
# <li><a href="/login/form">Login</a></li>
# <li><a href="/logout">Logout</a></li>
# </ul>
element = driver.find_element(:xpath, '//a[@href='/logout']')
* `NOTE` -- When using Element#find_element with `:xpath`, be aware that,
* webdriver follows standard conventions: a search prefixed with "//" will search the entire document, not just the children of this current node.
* Use ".//" to limit your search to the children of the receiving Element.
* By CSS Selector
# example html
# <div id="food">
# <span class="dairy">milk</span>
# <span class="dairy aged">cheese</span>
# </div>
element = driver.find_element(:css, #food span.dairy)
* Element's operation
* Button/Link/Image
driver.find_element(:id, 'BUTTON_ID).click
* Text Filed
# input some text
driver.find_element(:id, 'TextArea').send_keys 'InputText'
# send keyboard actions, press `ctral+a` & `backspace`
driver.find_element(:id, 'TextArea').send_keys [:contol, 'a'], :backspace
* Checkbox/Radio
# check if it is selected
driver.find_element(:id, 'CheckBox').selected?
# select the element
driver.find_element(:id, 'CheckBox').click
# deselect the element
driver.find_element(:id, 'CheckBox').clear
* Select
# get the select element
select = driver.find_element(:tag_name, "select")
# get all the options for this element
all_options = select.find_elements(:tag_name, "option")
# select the options
all_options.each do |option|
puts "Value is: " + option.attribute("value")
option.click
end
# anthoer way is using the Select class after seleniun-webdriver 2.14
element= driver.find_element(:tag_name,"select")
select=Selenium::WebDriver::Support::Select.new(element)
select.deselect_all()
select.select_by(:text, "Edam")
* visibility
driver.find_element(:id,'Element').displayed?
* get text
driver.find_element(:id,'Element').text
* get attribue
driver.find_element(:id, 'Element').attribute('class')
* Driver's operation
* execute javascript
driver.execute_script("return window.location.pathname")
* wait for a specific element to show up
# set the timeout to 10 seconds
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
# wait 10 seconds until the element appear
wait.until { driver.find_element(:id => "foo") }
* implicit waits
An implicit wait is to tell WebDriver to poll the DOM for a certain amount of time when trying to find an element or elements if they are not immediately available
driver = Selenium::WebDriver.for :firefox
# set the timeout for implicit waits as 10 seconds
driver.manage.timeouts.implicit_wait = 10
driver.get "http://somedomain/url_that_delays_loading"
element = driver.find_element(:id => "some-dynamic-element")
* switch between frames
# switch to a frame
driver.switch_to.frame "some-frame" # name or id
driver.switch_to.frame driver.find_element(:id, 'some-frame') # frame element
# switch back to the main document
driver.switch_to.default_content
* swich between windows
driver.window_handles.each do |handle|
driver.switch_to.window handle
end
* handle javascript dialog
# get the alert
a = driver.switch_to.alert
# operation on the alert
if a.text == 'A value you are looking for'
a.dismiss
else
a.accept
end
* Cookies
* Delete cookies
# You can delete cookies in 2 ways
# By name
driver.manage.delete_cookie("CookieName")
# Or all of them
driver.manage.delete_all_cookies
以上是关于markdown Selenium Webdriver CheatSheet的主要内容,如果未能解决你的问题,请参考以下文章