Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Module imports inside class methods #62

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
59 changes: 27 additions & 32 deletions JDI/web/selenium/elements/api_interact/get_element_module.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def __init__(self, by_locator=None, element=None):
self.frame_locator = None

def get_element(self):
return self.web_element if self.web_element is not None else self.__get_element_action()
return self.web_element if self.web_element else self.__get_element_action()

def get_elements(self):
result = self.__search_elements()
Expand All @@ -38,13 +38,15 @@ def __get_one_or_more_elements(self):
return self.web_elements if self.web_elements else self.__search_elements()

def __search_elements(self):
search_context = self.get_driver() \
if WebDriverByUtils.contains_root(self.by_locator) \
else self.get_search_context(self.element.parent)
if WebDriverByUtils.contains_root(self.by_locator):
search_context = self.get_driver()
else:
search_context = self.get_search_context(self.element.parent)

locator = WebDriverByUtils.trim_root(self.by_locator) \
if WebDriverByUtils.contains_root(self.by_locator) \
else self.by_locator
if WebDriverByUtils.contains_root(self.by_locator):
locator = WebDriverByUtils.trim_root(self.by_locator)
else:
locator = self.by_locator

if search_context is None:
search_context = self.get_driver()
Expand All @@ -58,36 +60,29 @@ def get_search_context(self, element):
driver = self.get_driver()
if element is None:
return driver
from JDI.web.selenium.elements.composite.web_site import WebSite
try:
if isinstance(element, WebSite) or isinstance(element.get_parent(), WebSite):
return driver
except: pass
if element.get_parent() is None and element.avatar.frame_locator is None:
return self.get_driver().switch_to.default_content()
except AttributeError as e:
print(e)
return driver
try:
if issubclass(element, WebSite) or issubclass(element.get_parent(), WebSite):
return driver
except: pass
from JDI.web.selenium.elements.base.base_element import BaseElement
from JDI.web.selenium.elements.base.element import Element
if (element is None or type(element) is BaseElement) or \
(element.get_parent() is None and element.avatar.frame_locator is None):
return self.get_driver().switch_to.default_content()
if type(element) is Element and element.avatar.has_web_element():
return element.get_web_element
if element.avatar.has_web_element():
return element.get_web_element
except AttributeError as e:
print(e)
locator = element.get_locator()
search_context = self.get_driver().switch_to.default_content() \
if WebDriverByUtils.contains_root(locator) \
else self.get_search_context(element.get_parent())
locator = WebDriverByUtils.trim_root(locator) \
if WebDriverByUtils.contains_root(locator) \
else locator

if WebDriverByUtils.contains_root(locator):
search_context = self.get_driver().switch_to.default_content()
locator = WebDriverByUtils.trim_root(locator)
else:
search_context = self.get_search_context(element.get_parent())
frame = element.avatar.frame_locator
if frame is not None:
if frame:
self.switch_to_last_opened_window()
res = search_context.find_element(element.avatar.frame_locator[0], element.avatar.frame_locator[1])
driver.switch_to.frame(res)
return search_context.find_element(locator[0], locator[1]) if locator is not None else search_context
return search_context.find_element(locator[0], locator[1]) if locator else search_context

def switch_to_last_opened_window(self):
self.get_driver().switch_to.window(self.get_driver().window_handles[-1])
Expand All @@ -96,7 +91,7 @@ def set_web_element(self, web_element):
self.web_element = web_element

def has_locator(self):
return self.by_locator is not None
return self.by_locator

def has_we_element(self):
return self.web_element is not None
return self.web_element
12 changes: 0 additions & 12 deletions JDI/web/selenium/elements/base/base_element.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,5 @@ def set_parent(self, parent):
def get_locator(self):
return self.avatar.by_locator

def __str__(self):
s = "Name " + self.__class__.__name__
if "by_locator" in dir(self.avatar):
if self.avatar.by_locator is not None:
s += "; Locator: %s:'%s'" % (self.avatar.by_locator[0], self.avatar.by_locator[1])
if self.parent is not None:
if "avatar" in dir(self.parent):
if self.parent.avatar.by_locator is not None:
s += "; Parent: %s:'%s'" % (self.parent.avatar.by_locator[0], self.parent.avatar.by_locator[1])

return s

def has_locator(self):
return self.avatar.has_locator()
2 changes: 1 addition & 1 deletion tests/test_get_driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def test_download_chromedriver(self):
assert os.path.exists("chromedriver.exe") is True

def test_get_last_release(self):
assert get_driver.get_last_release() == "90.0.4430.24"
assert get_driver.get_last_release() == "91.0.4472.19"

def test_get_last_release_for_build(self):
assert get_driver.get_last_release(build="90") == "90.0.4430.24"
Expand Down