def get_image(self):
        image = TakesScreenshotImageProvider(self._eyes).get_image()

        if self._eyes.is_cut_provider_explicitly_set:
            return image

        scale_ratio = self._eyes.device_pixel_ratio
        original_viewport_size = self._eyes._get_viewport_size()
        viewport_size = original_viewport_size.scale(scale_ratio)

        logger.info("logical viewport size: {}".format(original_viewport_size))

        force_full_page_screenshot = self._eyes.configure.force_full_page_screenshot
        if force_full_page_screenshot is not None:
            if not force_full_page_screenshot:
                current_frame_chain = self._eyes.driver.frame_chain  # type: FrameChain

                if len(current_frame_chain) == 0:
                    position_provider = ScrollPositionProvider(
                        self._eyes.driver,
                        self._eyes.driver.find_element_by_tag_name("html"),
                    )
                    loc = position_provider.get_current_position()
                else:
                    loc = current_frame_chain.default_content_scroll_position

                loc = loc.scale(scale_ratio)
                image = image_utils.crop_image(
                    image, Region.from_(loc, viewport_size))
        return image
    def get_image(self):
        image = TakesScreenshotImageProvider(self._eyes).get_image()
        self._eyes.debug_screenshot_provider.save(image, "SAFARI")

        if self._eyes.is_cut_provider_explicitly_set:
            return image

        scale_ratio = self._eyes.device_pixel_ratio
        original_viewport_size = self._eyes._get_viewport_size()
        viewport_size = original_viewport_size.scale(scale_ratio)

        logger.info("logical viewport size: {}".format(original_viewport_size))

        if self._useragent.os == OSNames.IOS:
            if self._devices_regions is None:
                self.init_device_regions_table()

            logger.info("physical device pixel size: {} x {}".format(
                image.width, image.height))

            device_delta = DeviceData(
                image.width,
                image.height,
                original_viewport_size.width,
                original_viewport_size.height,
                self._useragent.browser_major_version,
            )
            if device_delta in self._devices_regions:
                logger.debug("device model found in hash table")
                crop = self._devices_regions.get(device_delta)
                image = image_utils.crop_image(image, crop)
            else:
                logger.debug(
                    "device not found in list. returning original image.")
        elif not self._eyes.configuration.force_full_page_screenshot:
            current_frame_chain = self._eyes.driver.frame_chain  # type: FrameChain

            if len(current_frame_chain) == 0:
                position_provider = ScrollPositionProvider(
                    self._eyes.driver,
                    self._eyes.driver.find_element_by_tag_name("html"),
                )
                loc = position_provider.get_current_position()
            else:
                loc = current_frame_chain.default_content_scroll_position

            loc = loc.scale(scale_ratio)
            image = image_utils.crop_image(
                image, Region.from_location_size(loc, viewport_size))
        return image
Пример #3
0
def get_full_window_dom(driver, return_as_dict=False):
    # type: (EyesWebDriver, bool) -> Union[str, dict]
    current_root_element = eyes_selenium_utils.curr_frame_scroll_root_element(
        driver)

    with eyes_selenium_utils.get_and_restore_state(
            ScrollPositionProvider(driver, current_root_element)):
        logger.debug("Traverse DOM Tree")
        script_result = get_dom(driver)

    return json.loads(script_result) if return_as_dict else script_result
Пример #4
0
def get_full_window_dom(driver, return_as_dict=False):
    # type: (EyesWebDriver, bool) -> tp.Union[str, dict]

    dom_tree = json.loads(
        driver.execute_script(_CAPTURE_FRAME_SCRIPT, _ARGS_OBJ),
        object_pairs_hook=OrderedDict,
    )
    current_root_element = eyes_selenium_utils.current_frame_scroll_root_element(
        driver)

    with ScrollPositionProvider(driver, current_root_element):
        logger.debug("Traverse DOM Tree")
        _traverse_dom_tree(driver, {
            "childNodes": [dom_tree],
            "tagName": "OUTER_HTML"
        })

    if return_as_dict:
        return dom_tree

    return json.dumps(dom_tree)
Пример #5
0
 def test_position_scrolled_to_origin_after_traversing(self):
     # Page must contain scrolling
     dom_json = dom_capture.get_full_window_dom(self.driver)  # noqa: F841
     current_scroll = ScrollPositionProvider.get_current_position_static(
         self.driver, self.driver.find_element_by_tag_name("html"))
     assert current_scroll == Point(0, 0)