Skip to content

Commit 9411cbc

Browse files
authored
Fixed service_log_path for Firefox and older Selenium version (#1422)
1 parent 7acc161 commit 9411cbc

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

src/SeleniumLibrary/keywords/webdrivertools/webdrivertools.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,17 @@ def create_headless_chrome(self, desired_capabilities, remote_url, options=None,
123123
def create_firefox(self, desired_capabilities, remote_url, ff_profile_dir, options=None, service_log_path=None):
124124
profile = self._get_ff_profile(ff_profile_dir)
125125
if is_truthy(remote_url):
126-
defaul_caps = webdriver.DesiredCapabilities.FIREFOX.copy()
127-
desired_capabilities = self._remote_capabilities_resolver(desired_capabilities, defaul_caps)
126+
default_caps = webdriver.DesiredCapabilities.FIREFOX.copy()
127+
desired_capabilities = self._remote_capabilities_resolver(desired_capabilities, default_caps)
128128
return self._remote(desired_capabilities, remote_url,
129129
profile, options)
130130
service_log_path = service_log_path if service_log_path else self._geckodriver_log
131-
return webdriver.Firefox(options=options, firefox_profile=profile, service_log_path=service_log_path,
132-
**desired_capabilities)
131+
if self._has_service_log_path(webdriver.Firefox):
132+
# service_log_path is supported from Selenium 3.14 onwards
133+
# If can be removed when minimum Selenium version is 3.14.0 or greater
134+
return webdriver.Firefox(options=options, firefox_profile=profile,
135+
service_log_path=service_log_path, **desired_capabilities)
136+
return webdriver.Firefox(options=options, firefox_profile=profile, **desired_capabilities)
133137

134138
def _get_ff_profile(self, ff_profile_dir):
135139
if isinstance(ff_profile_dir, FirefoxProfile):

utest/test/keywords/test_selenium_options_parser.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ def test_create_firefox_with_options(self):
195195
when(webdriver).FirefoxProfile().thenReturn(profile)
196196
when(webdriver).Firefox(options=options, firefox_profile=profile,
197197
service_log_path=log_file).thenReturn(expected_webdriver)
198+
when(self.creator)._has_service_log_path(ANY).thenReturn(True)
198199
driver = self.creator.create_firefox({}, None, None, options=options)
199200
self.assertEqual(driver, expected_webdriver)
200201

@@ -221,6 +222,7 @@ def test_create_headless_firefox_with_options(self):
221222
when(webdriver).FirefoxProfile().thenReturn(profile)
222223
when(webdriver).Firefox(options=options, firefox_profile=profile,
223224
service_log_path=log_file).thenReturn(expected_webdriver)
225+
when(self.creator)._has_service_log_path(ANY).thenReturn(True)
224226
driver = self.creator.create_headless_firefox({}, None, None, options=options)
225227
self.assertEqual(driver, expected_webdriver)
226228

@@ -374,6 +376,7 @@ def test_create_driver_firefox(self):
374376
when(webdriver).FirefoxProfile().thenReturn(profile)
375377
expected_webdriver = mock()
376378
when(self.creator.selenium_options).create('firefox', str_options).thenReturn(options)
379+
when(self.creator)._has_service_log_path(ANY).thenReturn(True)
377380
when(webdriver).Firefox(options=options, firefox_profile=profile,
378381
service_log_path=log_file).thenReturn(expected_webdriver)
379382
driver = self.creator.create_driver('FireFox', desired_capabilities={}, remote_url=None,

utest/test/keywords/test_webdrivercreator.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ def test_firefox(self):
194194
when(webdriver).Firefox(options=None,
195195
firefox_profile=profile,
196196
service_log_path=log_file).thenReturn(expected_webdriver)
197+
when(self.creator)._has_service_log_path(ANY).thenReturn(True)
197198
driver = self.creator.create_firefox({}, None, None)
198199
self.assertEqual(driver, expected_webdriver)
199200
verify(webdriver).FirefoxProfile()
@@ -266,6 +267,7 @@ def test_firefox_profile(self):
266267
log_file = self.get_geckodriver_log()
267268
when(webdriver).Firefox(options=None, service_log_path=log_file,
268269
firefox_profile=profile).thenReturn(expected_webdriver)
270+
when(self.creator)._has_service_log_path(ANY).thenReturn(True)
269271
driver = self.creator.create_firefox({}, None, profile_dir)
270272
self.assertEqual(driver, expected_webdriver)
271273

@@ -278,6 +280,7 @@ def test_firefox_headless(self):
278280
log_file = self.get_geckodriver_log()
279281
when(webdriver).Firefox(options=options, service_log_path=log_file,
280282
firefox_profile=profile).thenReturn(expected_webdriver)
283+
when(self.creator)._has_service_log_path(ANY).thenReturn(True)
281284
driver = self.creator.create_headless_firefox({}, None, None)
282285
self.assertEqual(driver, expected_webdriver)
283286

@@ -634,6 +637,7 @@ def test_create_driver_firefox(self):
634637
log_file = self.get_geckodriver_log()
635638
when(webdriver).Firefox(options=None, service_log_path=log_file,
636639
firefox_profile=profile).thenReturn(expected_webdriver)
640+
when(self.creator)._has_service_log_path(ANY).thenReturn(True)
637641
for browser in ['ff', 'firefox']:
638642
driver = self.creator.create_driver(browser, None, None, None)
639643
self.assertEqual(driver, expected_webdriver)

utest/test/keywords/test_webdrivercreator_service_log_path.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ def test_create_firefox_with_service_log_path_none(self):
7070
when(webdriver).FirefoxProfile().thenReturn(profile)
7171
when(webdriver).Firefox(options=None, firefox_profile=profile,
7272
service_log_path=log_file).thenReturn(expected_webdriver)
73+
when(self.creator)._has_service_log_path(ANY).thenReturn(True)
7374
driver = self.creator.create_firefox({}, None, None, service_log_path=None)
7475
self.assertEqual(driver, expected_webdriver)
7576

@@ -80,9 +81,19 @@ def test_create_firefox_with_service_log_path_real_path(self):
8081
when(webdriver).FirefoxProfile().thenReturn(profile)
8182
when(webdriver).Firefox(options=None, firefox_profile=profile,
8283
service_log_path=log_file).thenReturn(expected_webdriver)
84+
when(self.creator)._has_service_log_path(ANY).thenReturn(True)
8385
driver = self.creator.create_firefox({}, None, ff_profile_dir=None, service_log_path=log_file)
8486
self.assertEqual(driver, expected_webdriver)
8587

88+
def test_create_firefox_with_older_selenium(self):
89+
when(self.creator)._has_service_log_path(ANY).thenReturn(False)
90+
expected_webdriver = mock()
91+
profile = mock()
92+
when(webdriver).FirefoxProfile().thenReturn(profile)
93+
when(webdriver).Firefox(options=None, firefox_profile=profile).thenReturn(expected_webdriver)
94+
driver = self.creator.create_firefox({}, None, ff_profile_dir=None)
95+
self.assertEqual(driver, expected_webdriver)
96+
8697
def test_create_headlessfirefox_with_service_log_path_real_path(self):
8798
log_file = os.path.join(self.output_dir, 'firefox-{index}.log')
8899
expected_webdriver = mock()
@@ -92,6 +103,7 @@ def test_create_headlessfirefox_with_service_log_path_real_path(self):
92103
when(webdriver).FirefoxOptions().thenReturn(options)
93104
when(webdriver).Firefox(options=options, firefox_profile=profile,
94105
service_log_path=log_file).thenReturn(expected_webdriver)
106+
when(self.creator)._has_service_log_path(ANY).thenReturn(True)
95107
driver = self.creator.create_headless_firefox({}, None, ff_profile_dir=None, service_log_path=log_file)
96108
self.assertEqual(driver, expected_webdriver)
97109

@@ -104,6 +116,7 @@ def test_create_firefox_from_create_driver(self):
104116
when(webdriver).FirefoxOptions().thenReturn(options)
105117
when(webdriver).Firefox(options=None, firefox_profile=profile,
106118
service_log_path=log_file).thenReturn(expected_webdriver)
119+
when(self.creator)._has_service_log_path(ANY).thenReturn(True)
107120
driver = self.creator.create_driver('firefox ', {}, remote_url=None, profile_dir=None,
108121
service_log_path=log_file)
109122
self.assertEqual(driver, expected_webdriver)

0 commit comments

Comments
 (0)