OS: OSX
Selenium Version: 3.11.0
Browser: FireFox 58.0.2, Chrome 65, Safari, Opera, Edge
Browser Version: See above
Accepted Webdriver parameters for logging should be consistent. Right now, some webdriver declaration requires log_path and some require service_log_path. Because of this I need to create If/Else blocks for each type of logging parameters. See below:
@fixture
def splinter_browser(context):
if context.default_browser == 'firefox':
if context.headless:
context.browser = Browser(context.default_browser, headless=True, log_path=os.devnull)
else:
context.browser = Browser(context.default_browser, headless=False, log_path=os.devnull)
elif context.default_browser == 'chrome':
if context.headless:
context.browser = Browser(context.default_browser, headless=True, service_log_path=os.devnull)
else:
context.browser = Browser(context.default_browser, headless=False, service_log_path=os.devnull)
yield context.browser
context.browser.quit()
webkitgtk/webdriver.py
class WebDriver(RemoteWebDriver):
"""
Controls the WebKitGTKDriver and allows you to drive the browser.
"""
def __init__(self, executable_path="WebKitWebDriver", port=0, options=None,
desired_capabilities=DesiredCapabilities.WEBKITGTK,
service_log_path=None):
chrome/webdriver.py
class WebDriver(RemoteWebDriver):
"""
Controls the ChromeDriver and allows you to drive the browser.
You will need to download the ChromeDriver executable from
http://chromedriver.storage.googleapis.com/index.html
"""
def __init__(self, executable_path="chromedriver", port=0,
options=None, service_args=None,
desired_capabilities=None, service_log_path=None,
chrome_options=None):
opera/webdriver.py
class OperaDriver(ChromiumDriver):
"""Controls the new OperaDriver and allows you
to drive the Opera browser based on Chromium."""
def __init__(self, executable_path=None, port=0,
options=None, service_args=None,
desired_capabilities=None, service_log_path=None,
opera_options=None):
firefox/webdriver.py
class WebDriver(RemoteWebDriver):
# There is no native event support on Mac
NATIVE_EVENTS_ALLOWED = sys.platform != "darwin"
CONTEXT_CHROME = "chrome"
CONTEXT_CONTENT = "content"
_web_element_cls = FirefoxWebElement
def __init__(self, firefox_profile=None, firefox_binary=None,
timeout=30, capabilities=None, proxy=None,
executable_path="geckodriver", options=None,
log_path="geckodriver.log", firefox_options=None,
service_args=None):
edge/webdriver.py
class WebDriver(RemoteWebDriver):
def __init__(self, executable_path='MicrosoftWebDriver.exe',
capabilities=None, port=0, verbose=False, log_path=None):
I agree we should make these consistent. @Dude-X ? :smile:
Yes, we should. 馃槃
@lmtierney @Dude-X I could perhaps take this one if you can clarify the specs a bit.
log_path is the desired arg name?@jerry-git service_log_path would make more sense as it's the log path for the service and we're passing this to the webdriver. We need to preserve backward compatibility with a warning similar to when we normalized the options parameter https://github.com/SeleniumHQ/selenium/commit/fa164f6dfbb7ad70dca5191cfac6a50432e342a0
Thanks for the clarifications @lmtierney! There's a trial in #5979.
Most helpful comment
Yes, we should. 馃槃