Skip to content

Commit 182a513

Browse files
committed
Use base_case.py to handle browser launching and closing.
1 parent 9f11c76 commit 182a513

File tree

2 files changed

+37
-96
lines changed

2 files changed

+37
-96
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1436,9 +1436,13 @@ def setUp(self):
14361436
self.display = Display(visible=0, size=(1920, 1200))
14371437
self.display.start()
14381438
self.headless_active = True
1439-
if self.with_selenium:
1440-
self.driver = browser_launcher.get_driver(self.browser,
1441-
self.headless)
1439+
1440+
# Launch WebDriver for both Pytest and Nosetests
1441+
self.driver = browser_launcher.get_driver(self.browser,
1442+
self.headless,
1443+
self.use_grid,
1444+
self.servername,
1445+
self.port)
14421446

14431447
def __insert_test_result(self, state, err):
14441448
data_payload = TestcaseDataPayload()
@@ -1576,3 +1580,13 @@ def tearDown(self):
15761580
data_payload.guid = self.testcase_guid
15771581
data_payload.logURL = index_file
15781582
self.testcase_manager.update_testcase_log_url(data_payload)
1583+
else:
1584+
# Using Nosetests
1585+
try:
1586+
# Finally close the browser
1587+
self.driver.quit()
1588+
except AttributeError:
1589+
pass
1590+
except:
1591+
print("No driver to quit.")
1592+
self.driver = None

seleniumbase/plugins/selenium_plugin.py

Lines changed: 20 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,8 @@
33
by providing a WebDriver object for the tests to use.
44
"""
55

6-
import time
7-
import os
86
from nose.plugins import Plugin
9-
from selenium import webdriver
107
from pyvirtualdisplay import Display
11-
from seleniumbase.core import selenium_launcher
12-
from seleniumbase.core import browser_launcher
138
from seleniumbase.fixtures import constants
149

1510

@@ -95,111 +90,43 @@ def options(self, parser, env):
9590

9691
def configure(self, options, conf):
9792
super(SeleniumBrowser, self).configure(options, conf)
98-
if not self.enabled:
99-
return
100-
101-
# Determine the browser version to use, and configure settings
102-
self.browser_settings = {
103-
"browserName": options.browser,
104-
'name': self.conf.testNames[0],
105-
'build': os.getenv('BUILD_TAG'),
106-
'project': os.getenv('JOB_NAME')
107-
}
108-
109-
if options.browser == constants.Browser.INTERNET_EXPLORER:
110-
self.browser_settings["platform"] = "WINDOWS"
111-
self.browser_settings["browserName"] = "internet explorer"
112-
113-
if options.browser_version == 'latest':
114-
version = constants.Browser.LATEST[options.browser]
115-
if version is not None:
116-
self.browser_settings["version"] = version
117-
else:
118-
version_options = constants.Browser.VERSION[options.browser]
119-
if (version_options is not None and
120-
options.browser_version in version_options):
121-
self.browser_settings["version"] = options.browser_version
122-
93+
self.enabled = True # Used if test class inherits BaseCase
12394
self.options = options
124-
self.headless_active = False
125-
126-
if (self.options.servername == "localhost" and
127-
self.options.browser == constants.Browser.HTML_UNIT):
128-
selenium_launcher.execute_selenium(self.options.servername,
129-
self.options.port,
130-
self.options.log_path)
95+
self.headless_active = False # Default setting
13196

13297
def beforeTest(self, test):
13398
""" Running Selenium locally will be handled differently
13499
from how Selenium is run remotely, such as from Jenkins. """
135100

101+
test.test.browser = self.options.browser
102+
test.test.headless = self.options.headless
103+
test.test.servername = self.options.servername
104+
test.test.port = self.options.port
105+
test.test.demo_mode = self.options.demo_mode
106+
test.test.demo_sleep = self.options.demo_sleep
107+
test.test.highlights = self.options.highlights
108+
test.test.verify_delay = self.options.verify_delay # MasterQA
109+
test.test.timeout_multiplier = self.options.timeout_multiplier
110+
test.test.use_grid = False
111+
if test.test.servername != "localhost":
112+
# Use Selenium Grid (Use --server=127.0.0.1 for localhost Grid)
113+
test.test.use_grid = True
136114
if self.options.headless:
137115
self.display = Display(visible=0, size=(1920, 1200))
138116
self.display.start()
139117
self.headless_active = True
140-
if self.options.servername == "localhost":
141-
try:
142-
self.driver = self.__select_browser(self.options.browser)
143-
test.test.driver = self.driver
144-
if "version" in self.browser_settings.keys():
145-
version = self.browser_settings["version"]
146-
else:
147-
version = ""
148-
test.test.browser = "%s%s" % (self.options.browser, version)
149-
test.test.demo_mode = self.options.demo_mode
150-
test.test.demo_sleep = self.options.demo_sleep
151-
test.test.highlights = self.options.highlights
152-
test.test.verify_delay = self.options.verify_delay # MasterQA
153-
test.test.timeout_multiplier = self.options.timeout_multiplier
154-
except Exception as err:
155-
print("Error starting/connecting to Selenium:")
156-
print(err)
157-
os.kill(os.getpid(), 9)
158-
else:
159-
connected = False
160-
error = "(Unknown)"
161-
for i in range(1, 4):
162-
try:
163-
self.driver = self.__select_browser(self.options.browser)
164-
test.test.driver = self.driver
165-
if "version" in self.browser_settings.keys():
166-
version = self.browser_settings["version"]
167-
else:
168-
version = ""
169-
test.test.browser = "%s%s" % (
170-
self.options.browser, version)
171-
connected = True
172-
break
173-
except Exception as err:
174-
error = err
175-
print("Attempt #%s to connect to Selenium failed" % i)
176-
if i < 3:
177-
print("Retrying in 3 seconds...")
178-
time.sleep(3)
179-
if not connected:
180-
print("Error starting/connecting to Selenium:")
181-
print(error)
182-
print("\n\n")
183-
os.kill(os.getpid(), 9)
118+
# The driver will be received later
119+
self.driver = None
120+
test.test.driver = self.driver
184121

185122
def afterTest(self, test):
186123
try:
124+
# If the browser window is still open, close it now.
187125
self.driver.quit()
188126
except AttributeError:
189127
pass
190128
except:
191-
print("No driver to quit.")
129+
pass
192130
if self.options.headless:
193131
if self.headless_active:
194132
self.display.stop()
195-
196-
def __select_browser(self, browser_name):
197-
if (self.options.servername != "localhost" or
198-
self.options.browser == constants.Browser.HTML_UNIT):
199-
return webdriver.Remote("http://%s:%s/wd/hub" % (
200-
self.options.servername,
201-
self.options.port),
202-
self.browser_settings)
203-
else:
204-
return browser_launcher.get_driver(browser_name,
205-
self.options.headless)

0 commit comments

Comments
 (0)