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的主要内容,如果未能解决你的问题,请参考以下文章

Selenium 入门到精通系列:五

selenium登录 京东滑动验证码

Selenium IEDriverServer 日志记录

selenium自动化模拟解锁

selenium自动化模拟解锁

如何用selenium模拟鼠标操作