Sunday, July 27, 2014

WebDriver with Python using Splinter and Nose

Till now I have been writing all my post in java, However after spending almost an year in python, Why not I write post in python. So here is my first post about how to use WebDriver in Python. If you are reading this please don't forget to put the comment.

I have used two frameworks for writing Webdriver tests in Python

Splinter:
Splinter is basically a wrapper around the Webdriver API, which ease you to write code as compared to webdriver.

For example if you have to fill a form with web driver, your code might look
elem = browser.find_element.by_name('username')
elem.send_keys('janedoe')

However, if you use splinter, it will look like this
browser.fill('username', 'janedoe')

Better, Aint't it ?

Nose:
Nose is an unit testing framework extended from python unittest. As I told you it's extended from unittest which mean it provides all the features provided by unittest plus few more

Enough of theory, let's see the code.


from nose.tools import assert_true

__author__ = 'Gaurang_Shah1'


import unittest
import splinter


class GoogleTest(unittest.TestCase):

    def setUp(self):
        self.browser = splinter.Browser()

    def tearDown(self):
        self.browser.quit()

    def test_google_search(self):
        google = GooglePage(self.browser)
        google.search('splinter - python acceptance testing for web applications').verify_text_on_page(''splinter.cobrateam.info')


class GooglePage(object):

    def __init__(self, browser):
        self.browser = browser
        self.browser.visit("http://google.co.in")

    def search(self, keyword):
        self.browser.fill('q', keyword)
        self.browser.find_by_name('btnG').click()
        return self

    def verify_text_on_page(self, text):
        assert_true(self.browser.is_text_present('splinter.cobrateam.info'))