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
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
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)
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)