コード例 #1
0
 def _test_expand_settings(
     self,
     expand_settings_elem: WebElement,
     settings_elem: WebElement,
 ) -> None:
     self.assertFalse(settings_elem.is_displayed())
     expand_settings_elem.click()
     self.assertTrue(settings_elem.is_displayed())
コード例 #2
0
ファイル: scraper.py プロジェクト: cuckookernel/scratch
def _scroll_to_elem(driver: WebDriver,
                    elem: WebElement,
                    y_delta=-70,
                    step=70,
                    verbose=False,
                    stop_if_visible=True):
    prev_y = -1
    while True:
        elem_y = elem.location['y']
        target_y = elem.location['y'] + y_delta

        cur_y = driver.execute_script('return window.pageYOffset')
        if verbose:
            print(
                f'scroll_to_elem: target_y: {target_y} elem.displayed: {elem.is_displayed()} '
                f'cur_y: {cur_y}')

        if abs(target_y - cur_y) < 50:
            driver.execute_script(f"window.scrollTo(0, {target_y})")
            prev_y = cur_y
            break
        elif (cur_y == prev_y) and elem.is_displayed() and elem.is_enabled():
            break
        else:
            direction = +1.0 if (target_y - cur_y) >= 0 else -1.0
            next_y = int(cur_y +
                         direction * step * random.lognormvariate(0, 0.2))
            driver.execute_script(f"window.scrollTo(0, {next_y})")
            prev_y = cur_y
        if should_stop():
            break
        _human_wait(0.05)
コード例 #3
0
    def is_element_visible(self, element: WebElement) -> bool:
        """Return whether or not the specified element is currently visible.

        Args:
            element:
        """
        return element.is_displayed()
コード例 #4
0
 def waitForDissappear( webelmnt: WebElement, counter:int=10 ):
     timer=0
     while webelmnt.is_displayed()>-1:
         if timer>=counter:
             Log.write('Ошибка Ожидания исчезновения элемента '+webelmnt)
             return False
         time.sleep(1)
         timer+=1
     return True
コード例 #5
0
 def is_element_exist(self,
                      locator_type: By = None,
                      locator_value: str = None,
                      element: WebElement = None,
                      from_element: WebElement = None,
                      time_to_wait: int = TIME_TO_WAIT) -> bool:
     if not element:
         try:
             element = self.find_element_by(locator_type, locator_value,
                                            from_element, time_to_wait)
         except TimeoutException as e:
             return False
     return element.is_displayed()
コード例 #6
0
ファイル: selenium_tools.py プロジェクト: areebimtar/hive
def click(element: WebElement = None,
          element_parent: Union[None, WebDriver, WebElement] = None,
          locator: Locator = None,
          delay: Union[int, float] = None):
    """ Clicks on element. Repeats when it fails

    It is possible to provide element object directly or its parent object and locator.
    :param element: WebElement - if present, directly click on this WebElement
    :param element_parent: WebElement - if present first find the element to click on under this element/WebDriver
        object using locator parameter
    :param locator: locator tuple i.e. (By.CSS_SELECTOR, 'div.my-class')
    :param delay: optional delay between attempts
    """
    for i in range(3, -1, -1):
        if locator and element_parent:
            try:
                element = element_parent.find_element(*locator)
            except WebDriverException as e:
                if i == 0:
                    raise
                print("ERROR: cannot find element", e.args)
                sleep(0.5)
                continue

        if not element.is_displayed():
            if i == 0:
                raise Exception('Element is not displayed')
            else:
                print('ERROR: element is not displayed')
                sleep(0.5)
                continue
        if not element.is_enabled():
            if i == 0:
                raise Exception('Element is not enabled')
            else:
                print('ERROR: element is not enabled')
                sleep(0.5)
                continue

        try:
            sleep(0.5)
            element.click()
            if delay is not None:
                sleep(delay)
            break
        except WebDriverException as e:
            if i == 0:
                raise
            print("ERROR: cannot click on element", e.args)
コード例 #7
0
def scroll_to(driver: WebDriver, element: WebElement):
    if "firefox" in driver.capabilities["browserName"].lower():
        view_port_height = int(
            driver.execute_script("return window.innerHeight;"))
        vertical_position = int(element.location["y"])
        if vertical_position > view_port_height:
            logging.debug(f"Scrolling to y={vertical_position}")
            driver.execute_script(f"window.scrollTo(0, {vertical_position});")
        else:
            logging.debug(
                f"Element is already positioned ({vertical_position}) within view_port "
                f"({view_port_height})")
        if not element.is_displayed():
            logging.debug(
                f"Scrolling to element using scrollIntoView: {element}")
            driver.execute_script(f"arguments[0].scrollIntoView(true);",
                                  element)
    else:
        action_chains = ActionChains(driver)
        action_chains.move_to_element(element)
        action_chains.perform()
コード例 #8
0
def scroll_to_element_if_not_visible(driver: WebDriver,
                                     element: WebElement,
                                     *,
                                     section: str = None,
                                     name: str = None):
    """Scroll to element only if it's not visible.

    Delaying scrolling to every element can save around 100ms per element.
    """
    try:
        yield
    except TimeoutException as e:
        if section and name:
            logging.debug(
                f"Scrolling/Moving focus to '{section} → {name}' element")
        else:
            logging.warning(
                f"Element is not visible, will scroll to it & check it's visibility: "
                f"{e.msg}")
        scroll_to(driver, element)
        error = (
            f"Element '{name or element.tag_name}' is not visible even after scrolling "
            f"to it")
        assert element.is_displayed(), error
コード例 #9
0
def wait_displayed(element: WebElement):
    while not element.is_displayed():
        sleep(1)
コード例 #10
0
def check_if_element_is_visible(web_element: WebElement, element_name: str):
    """Check if provided web element is visible."""
    with assertion_msg(
            f"Expected to see '{element_name}' element but it's not visible"):
        assert web_element.is_displayed()
コード例 #11
0
 def click_element(self, element: WebElement) -> None:
     if element.is_displayed():
         element.click()
コード例 #12
0
 def input_text(self, element: WebElement, text: str) -> None:
     if element.is_displayed():
         element.send_keys(text)
コード例 #13
0
 def matches(self, answer: WebElement) -> bool:
     if answer.is_displayed():
         return True
     return False
コード例 #14
0
def getTextA(elm:WebElement)->str:
    waitUntil(lambda: elm.is_displayed() and elm.text,30,1)
    return elm.text
コード例 #15
0
 def __call__(self, element: WebElement):
     """Return true if elements is displayed and false otherwise."""
     return element.is_displayed()
コード例 #16
0
ファイル: aternos_watcher.py プロジェクト: Serbroda/ragbag
def is_element_interactible(element: WebElement) -> bool:
    return element.is_displayed() and element.is_enabled()
コード例 #17
0
ファイル: security.py プロジェクト: bluebridge/cyan
def __is_valid_element(element: WebElement):
    assert (element is not None)
    assert element.is_displayed() is True, "element is not displayed on the page"
    assert element.is_enabled() is True, "element is not enabled"