Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
d1ffuz0r committed Apr 28, 2012
1 parent df4f637 commit 55d5d86
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,6 @@ pip-log.txt

#Mr Developer
.mr.developer.cfg

#Other log
chromedriver.log
42 changes: 42 additions & 0 deletions pool.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/usr/bin/env python
from selenium import webdriver


class WebPool(object):
def __init__(self):
self.browsers = {}
self.result = {}
self.actions = {}
self.ignored = ('send_keys',)

def start(self):
for name, browser in self.browsers.items():
try:
b = browser()
self.browsers[name] = b
self.result[name] = b
except:
self.result[name] = False
return self.result

def stop(self):
for name, browser in self.browsers.items():
try:
browser.quit()
except:
pass
finally:
del self.browsers[name]

def action(self, action, arg):
for name, browser in self.browsers.items():
try:
if not self.result[name]:
self.result[name] = getattr(browser, action)(arg)
elif action in self.ignored:
getattr(self.result[name], action)(arg)
else:
self.result[name] = getattr(self.result[name], action)(arg)
except:
pass
return self.result
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
selenium==2.20.0
51 changes: 51 additions & 0 deletions tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#!/usr/bin/env python
import unittest
import threading
from pool import WebPool
from selenium import webdriver
from selenium.webdriver.remote.webelement import WebElement


class Tests(unittest.TestCase):

wait = threading.Event().wait

@classmethod
def setUpClass(cls):
cls.pool = WebPool()
cls.brs = {'chrome': webdriver.Chrome,
'chrome1': webdriver.Chrome}
cls.pool.browsers = cls.brs
cls.pool.action('implicitly_wait', 40)

@classmethod
def tearDownClass(cls):
cls.pool.stop()
cls.pool.result = {}

def test_add_browser(self):
self.assertEquals(self.pool.browsers, self.brs)

def test_get_page_browsers(self):
self.pool.start()
self.pool.action('get', 'http://localhost:8000')
ac = self.pool.action('find_element_by_tag_name', 'p')
self.assertIsInstance(ac['chrome1'], WebElement)
self.assertIsInstance(ac['chrome'], WebElement)

def test_go_to_links(self):
self.pool.start()
self.pool.action('get', 'http://localhost:8000')
self.pool.action('get', 'http://localhost:8000/news/')

def test_chain_actions(self):
self.pool.start()
self.pool.action('get', 'http://localhost:8000/feedback/')
self.pool.action('find_element_by_name', 'name')
self.pool.action('send_keys', 'None')
vals = self.pool.result
self.assertEquals(vals['chrome'].get_attribute('value'), 'None')
self.assertEquals(vals['chrome1'].get_attribute('value'), 'None')

if __name__ == '__main__':
unittest.main()

0 comments on commit 55d5d86

Please sign in to comment.