def test_getDriver_ReturnsSingletonSeleniumWebdriver(self):
'''
Test we return a single instance of selenium webdriver.
'''
mock_element = mock(WebElement)
when(mock_element).send_keys(any(str)).thenReturn(None)
webdriver_mock = mock(WebDriver)
when(webdriver_mock).get("http://www.google.com").thenReturn(None)
when(webdriver_mock).find_element_by_name('q').thenReturn(mock_element)
webdriverfactory_mock = mock(WebDriverFactory)
when(webdriverfactory_mock).create_webdriver(
testname=None).thenReturn(webdriver_mock)
webdriver_provider = WebDriverManager(webdriverfactory_mock)
# Perform singleton tests
driver1 = webdriver_provider.get_driver()
driver2 = webdriver_provider.get_driver()
self.assertIsNotNone(driver1, 'object is not webdriver.')
self.assertEqual(
id(driver1), id(driver2), 'Webdriver instance should be singleton.')
# Do a small test by grabbing google's screen to exercise the webdriver
# interface.
driver1.get("http://www.google.com")
# Q is the name google use for the query field.
element = driver1.find_element_by_name('q')
element.send_keys("Hello World")