def scrollIntoCenter(self):

        scrollElementIntoMiddle = "var viewPortHeight = Math.max(document.documentElement.clientHeight, " \
                                  "window.innerHeight || 0); var elementTop = arguments[0].getBoundingClientRect().top;"\
                                  "window.scrollBy(0, elementTop-(viewPortHeight/2));"

        Browser.get_driver().execute_script(scrollElementIntoMiddle, self.get_element())
    def navigate(button):

        Browser.create_new_driver(Browser.CHROME)
        Browser.get_driver().get("https://www.hackerrank.com/dashboard")
        button_object = UiObject(By.XPATH, "//a[contains(@class, 'nav-link')]/span[text() = '{}']/parent::a".format(button))
        title = UiObject(By.XPATH, "//h1")
        button_object.click()
        time.sleep(2)
        print ("Thread: {} URL: {} Title: {} Button Class: {}".format(threading.currentThread(),
                                                                     Browser.get_driver().current_url,
                                                                     title.get_text(),
                                                                     button_object.get_attribute("class")))
        Browser.shutdown()
    def exists(self):

        try:
            WebDriverWait(Browser.get_driver(), 1).until(EC.presence_of_element_located((self.by, self.locator)))
            return True
        except:
            return False
示例#4
0
 def press_key(self, key, use_action_chains=False):
     if not use_action_chains:
         self.get_element().send_keys(key)
     else:
         chains = ActionChains(driver=Browser.get_driver())
         chains.send_keys(key).perform()
     return self
示例#5
0
 def is_clickable(by, locator):
     try:
         WebDriverWait(Browser.get_driver(), 1).until(
             EC.element_to_be_clickable((by, locator)))
         return True
     except:
         return False
示例#6
0
    def click(self, wait=10, use_action_chains=False):
        self.wait_to_be_clickable(wait)
        initial_handles = Browser.get_driver().window_handles

        if use_action_chains:
            ui_object = self.get_element()
            ActionChains(Browser.get_driver()).move_to_element(ui_object).click().perform()
        else:
            try:
                self.get_element().click()
            except Exception as error:
                if "Other element would receive the click" in error:
                    self.scrollIntoCenter()
                    self.get_element().click()
                else:
                    raise error
        if len(Browser.get_driver().window_handles) > len(initial_handles):
            Browser.switch_to_latest_active_window()
        return self
    def wait_to_disappear(self, seconds=10, ignore_error=False):

        start = time.time()
        while (time.time() - start) < seconds:
            try:
                WebDriverWait(Browser.get_driver(), seconds).until(EC.invisibility_of_element_located((self.by, self.locator)))
            except Exception as error:
                if not ignore_error:
                    raise AssertionError("Locator: {} did not disappear in {} seconds! Error: {}"
                                         .format(self.locator, seconds, error.message))
        return self
    def is_checked(self):

        return Browser.get_driver().execute_script("return arguments[0].checked;", self.get_element())
    def get_all_elements(self, wait=10):

        self.wait_to_appear(wait)
        return Browser.get_driver().find_elements(self.by, self.locator)
    def mouse_over(self):

        ui_object = self.get_element()
        ActionChains(Browser.get_driver()).move_to_element(ui_object).perform()
        return self
    def scrollIntoView(self):

        Browser.get_driver().execute_script("arguments[0].scrollIntoView()", self.get_element())
        return self