May 14, 2013

Queries inside you before start anything - Ask about it

Whenever we start to test the application include your question to overcome many issues. These are the question are rolled out inside my mind....

What is my domain?
Which domain u r going to work?
What is the limits and credits?
Is there anything available already?
In which language my app is going to run?
What are the advantages & disadvantages of language?
What is the requirement of app?
How my app got designed?
What is the customers need?
What to test?
Why to test?
How to Test?
When to start test?
When to finish test?
Which place to test?
What is the major functionality to test?
What's your methodology?
What’s the server name?

Is this true? Do you  really think it is true?
Is this something good about that "third" person?
Is this something that is useful in someway to me?
What if that person about whom we are talking is present right here and listening to you - will you still talk the same way?

January 24, 2013

Selenium Web driver Basic cheat sheet for identifying element

I feel like below post will be useful for the people using selenium....

I Want to share the same with alllllll. I too looked for the same cheat sheet


Source: > https://gist.github.com/3284966

Thanks to huangzhichong selenium-webdriver-cheatsheet.md


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

December 26, 2012

Waiting for 2013

Waiting for the year 2013..... Still counting my days...... For all the fellow testers I planned to change my way of posting the blogs..... Soon I have planned to post my blog as a useful one and will share day to day activities in my team for learning.

Reason for the Above image..... As tester We need to identify what is behind the image... Guess yourself and  add your comments below...............

October 19, 2012

Selenium + Ruby + window + x86 System


Hi Guys,
I tried to install the selenium in my system.... I faced so many issues while installing.
I would like to share the info in the short way

gems needs to be installed
How to install selenium in Ruby language

=> check for system information.
Go to run in start and type>> msinfo32
Hardware Resources>> System Type
verify whether x86 or x32 system information

=> Install the corresponding ruby installer package

Select Ruby installer
Select the checkboxes while installing.

=> Install Devkit
go to the dev kit installed  path
enter the following commands in command prompt.
ruby dk.rb init
ruby dk.rb review

=> Now install  the ffi older version.
gem install ffi-rzmq

to avoid FFI nmake error.
I got this error because of new version of FFI is not supporting.

=> Now you can install the following gems in your local machine.

gem install selenium
gem install selenium-webdriver


At the same moment we can install cucumber in your Windows machine

Developer/Tester Who is Enemy???


Testers are considering a bug as their friend. Hence Testers became bug friendly.
Other than Testing Team, people consider the bug as their enemy.
Result: Causes the Tester as their enemies.
If something happens to a child, then mother feels very bad.
Child = Application
Developer=Mother
Testers = shield for the child.

Testers are enemies for everyone>>
Testers have the power to Stop/Postpone Production Release.
Hence at that situation, Testers are became a major enemy for everyone not only from the development team.

Testers are enemies>>
If any Software Tester identifies defect in the build product, then they file the bug in bug tracking tool.
Bug Count Increases
Result: Testers became enemy for the Developers

Developers are enemies>>
Sometime Developers communicate with Testers orally & compromise the tester for the production release.
Result: Testers are responsible for the orally communicated defect.
At this situation developer became enemy for the testers.