@@ -2779,18 +2779,35 @@ def switch_to_default_driver(self):
2779
2779
if self .driver in self .__driver_browser_map :
2780
2780
self .browser = self .__driver_browser_map [self .driver ]
2781
2781
2782
- def save_screenshot (self , name , folder = None ):
2783
- """Saves a screenshot of the current page.
2782
+ def save_screenshot (
2783
+ self , name , folder = None , selector = None , by = By .CSS_SELECTOR
2784
+ ):
2785
+ """
2786
+ Saves a screenshot of the current page.
2784
2787
If no folder is specified, uses the folder where pytest was called.
2785
- The screenshot will be in PNG format."""
2788
+ The screenshot will include the entire page unless a selector is given.
2789
+ If a provided selector is not found, then takes a full-page screenshot.
2790
+ If the folder provided doesn't exist, it will get created.
2791
+ The screenshot will be in PNG format: (*.png)
2792
+ """
2786
2793
self .wait_for_ready_state_complete ()
2794
+ if selector and by :
2795
+ selector , by = self .__recalculate_selector (selector , by )
2796
+ if page_actions .is_element_present (self .driver , selector , by ):
2797
+ return page_actions .save_screenshot (
2798
+ self .driver , name , folder , selector , by
2799
+ )
2787
2800
return page_actions .save_screenshot (self .driver , name , folder )
2788
2801
2789
- def save_screenshot_to_logs (self , name = None ):
2802
+ def save_screenshot_to_logs (
2803
+ self , name = None , selector = None , by = By .CSS_SELECTOR
2804
+ ):
2790
2805
"""Saves a screenshot of the current page to the "latest_logs" folder.
2791
2806
Naming is automatic:
2792
2807
If NO NAME provided: "_1_screenshot.png", "_2_screenshot.png", etc.
2793
2808
If NAME IS provided, it becomes: "_1_name.png", "_2_name.png", etc.
2809
+ The screenshot will include the entire page unless a selector is given.
2810
+ If a provided selector is not found, then takes a full-page screenshot.
2794
2811
(The last_page / failure screenshot is always "screenshot.png")
2795
2812
The screenshot will be in PNG format."""
2796
2813
self .wait_for_ready_state_complete ()
@@ -2809,6 +2826,12 @@ def save_screenshot_to_logs(self, name=None):
2809
2826
if len (name ) == 0 :
2810
2827
name = "screenshot"
2811
2828
name = "%s%s.png" % (pre_name , name )
2829
+ if selector and by :
2830
+ selector , by = self .__recalculate_selector (selector , by )
2831
+ if page_actions .is_element_present (self .driver , selector , by ):
2832
+ return page_actions .save_screenshot (
2833
+ self .driver , name , test_logpath , selector , by
2834
+ )
2812
2835
return page_actions .save_screenshot (self .driver , name , test_logpath )
2813
2836
2814
2837
def save_page_source (self , name , folder = None ):
0 commit comments