QA/Execution/Web Testing/Selenium Guidelines

< QA‎ | Execution‎ | Web Testing
Revision as of 19:25, 21 January 2010 by Stephend (talk | contribs)

Here be some Selenium guidelines (mostly for writing, but include running here too).

Some good practices

  • Give meaningful names to test cases. Example: "Advanced search test case" is a very vague name which does not specify what exactly you intend to verify. "Verify platform specific search for firefox addons" is more specific.
    • Format: Login-VerifyUserNameOnlyFails (e.g.)
      • No spaces, no underscores, and prefix with the test area
  • Give meaningful names to variables. This will make it easier to maintain the test case in the longer run.
  • It's best to check if you are logged in at the beginning of every test case. At the end of the test case, always logout.

Example: StoreElementpresent link=log in not_logged_in

gotoIf ${not_logged_in}==true target

clickAndWait link=Log out

label target . .

IDE

  • click vs. clickAndWait - use the latter on anything that requires network activity, but if you use the former on other buttons/links, your script will pause indefinitely
  • verifyLocation - use w/regexpi; otherwise it'll be absolute (I think)
    • e.g. ...
  • wherever possible, use relative--not absolute--URLs in |open| commands
  • Store xpath you use in the testcase in variables at the beginning of the testcase and use the variable whenever you need to use the xpath.This way,if you ever need to change the xpath,you change it only once at the top of the testcase.
  • storeLocation/verifyLocation usage:
    • after a storeLocation, verifyLocation by:
      • verifyLocation regexpi:.*/en-US/firefox/admin.* (e.g.)
  • Add an echo statement after every assertion.
  • StoreXpathCount command can be used to find the number of elements having a similar xpath.
  • VerifySelectedLabel can be used to verify the selected option in a dropdown box.

PHP

  • Locating elements
    • xpath: for elements that have dynamically generated xpaths use 'contains'.
  for e.g. if xpath for 'remove add-on' link has the add-on ID 
  in it (id('addon-2464')/a[1]) and we do not know the add-on ID then
  we can write the xpath with 'contains'
  //div[@id,'addon-2464'][2]/a[1]) => //div[contains(@id,'addon- ')][2]/a[1]
    • If you want to match on the text in an element
  //a[text()=’My Text’]: matches a link whose text is “My Text” 
    • If you want to match more than one string in attribute or text
  //a[contains(text(),’Bill’) && contains(text(), ‘Clinton’)]:matches a link
  whose text contains both Bill and Clinton. You can use any xpath function or
  operator to create your expression   
    • Find the nth element of a type
  //div[position()=3]: matches the third div on the page
  //div[@id=’abc’]//table[position()=3]: matches the third table inside the div
  whose id is abc