Skip to content

Instantly share code, notes, and snippets.

Created August 7, 2012 12:38
Show Gist options
  • Save huangzhichong/3284966 to your computer and use it in GitHub Desktop.
Save huangzhichong/3284966 to your computer and use it in GitHub Desktop.
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 '' ''

    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="">cheese</a>
      element = driver.find_element(:link, 'cheese')
      # or			
      element = driver.find_element(:link_text, 'cheese')
    • By Partial Link Text

      # example html
      # <a href="">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")
      # anthoer way is using the Select class after seleniun-webdriver 2.14		
      element= driver.find_element(:tag_name,"select")
      select.select_by(:text, "Edam")
    • visibility

    • get 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 = => 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
    • swich between windows

        driver.window_handles.each do |handle|
          driver.switch_to.window handle
    • handle javascript dialog

        # get the alert
        a = driver.switch_to.alert
        # operation on the alert
        if a.text == 'A value you are looking for'
  • Cookies

    • Delete cookies

        # You can delete cookies in 2 ways
        # By name
        # Or all of them
Copy link

Hello, Do you know how to count the elements on a ul element? from a table I can use len but won't work on ul element

Copy link

so great this is amaze. thanks much

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment