diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ae4f387..2ea0db6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,10 @@ ## 1.0.0ax (next from master branch) - naming changes: - - tbd... + - tbd + - upcoming breaking changes: + - selene.config.app_host renamed to selene.config.base_url + - selene.config.app_host still works but will be removed in next versions ## 1.0.0a8 (released 16.02.2017) - new features added diff --git a/selene/config.py b/selene/config.py index a8534998..aca3cbc9 100644 --- a/selene/config.py +++ b/selene/config.py @@ -1,27 +1,36 @@ -# todo: make the properties also "object oriented" to support different configs per different SeleneDriver instances +# todo: make the properties also 'object oriented' to support different configs per different SeleneDriver instances import itertools import os import time from selene.browsers import Browser +from selene.helpers import env -timeout = 4 -poll_during_waits = 0.1 -app_host = '' + +timeout = env('selene_timeout') or 4 +poll_during_waits = env('selene_poll_during_waits') or 0.1 + +base_url = env('selene_base_url') or '' +app_host = None +# todo: we may probably refactor selene.config to selene.browser.config where config - is an object, not a module +# todo: then it would be better to add warnings.warn("use base_url instead", DeprecationWarning) # todo: make cashing work (currently will not work...) -cash_elements = False -"""To cash all elements after first successful find - config.cash_elements = True""" +cash_elements = env('selene_cache_elements') == 'True' or False +'''To cash all elements after first successful find + config.cash_elements = True''' + +browser_name = env('selene_browser_name') or Browser.FIREFOX + +maximize_window = False if env('selene_maximize_window') == 'False' else True + +hold_browser_open = env('selene_hold_browser_open') == 'True' or False -browser_name = Browser.FIREFOX -maximize_window = True -hold_browser_open = False counter = itertools.count(start=int(round(time.time() * 1000))) -screenshot_folder = os.path.join(os.path.expanduser("~"), - ".selene", - "screenshots", - str(next(counter))) +screenshot_folder = env('selene_screenshot_folder') or os.path.join(os.path.expanduser('~'), + '.selene', + 'screenshots', + str(next(counter))) desired_capabilities = None diff --git a/selene/helpers.py b/selene/helpers.py index 418edb3f..98265bb1 100644 --- a/selene/helpers.py +++ b/selene/helpers.py @@ -50,3 +50,10 @@ def css_or_by_to_by(css_selector_or_by): if isinstance(css_selector_or_by, str): return (By.CSS_SELECTOR, css_selector_or_by) raise TypeError('css_selector_or_by should be str with CSS selector or Tuple[by:str, value:str]') + + +def env(key): + try: + return os.environ[key] + except KeyError: + return None diff --git a/selene/tools.py b/selene/tools.py index cca6401e..06c34b65 100644 --- a/selene/tools.py +++ b/selene/tools.py @@ -31,18 +31,20 @@ def visit(absolute_or_relative_url): """ Loads a web page in the current browser session. :param absolute_or_relative_url: - an absolute url to web page in case of config.app_host is not specified, + an absolute url to web page in case of config.base_url is not specified, otherwise - relative url correspondingly :Usage: visit('http://mydomain.com/subpage1') visit('http://mydomain.com/subpage2') # OR - config.app_host = 'http://mydomain.com' + config.base_url = 'http://mydomain.com' visit('/subpage1') visit('/subpage2') """ - get_driver().get(selene.config.app_host + absolute_or_relative_url) + # todo: refactor next line when app_host is removed + base_url = selene.config.app_host if selene.config.app_host else selene.config.base_url + get_driver().get(base_url + absolute_or_relative_url) def s(css_selector_or_by):