From f2d7a43304d965c2a5ce6d3371d917ebaead6c7d Mon Sep 17 00:00:00 2001 From: Suyash Shekhar Date: Tue, 13 Apr 2021 00:32:31 +0800 Subject: [PATCH] Prevent kwargs override on replace --- scrapy_selenium/http.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scrapy_selenium/http.py b/scrapy_selenium/http.py index cddf7bf..c846e79 100644 --- a/scrapy_selenium/http.py +++ b/scrapy_selenium/http.py @@ -30,3 +30,15 @@ def __init__(self, wait_time=None, wait_until=None, screenshot=False, script=Non self.script = script super().__init__(*args, **kwargs) + + def replace(self, *args, **kwargs): + """Create a new SeleniumRequest with the same attributes except for those + given new values. + """ + selenium_request_keys = ['wait_time', 'wait_until', 'screenshot', 'script'] + scrapy_request_keys = ['url', 'method', 'headers', 'body', 'cookies', 'meta', 'flags', + 'encoding', 'priority', 'dont_filter', 'callback', 'errback', 'cb_kwargs'] + for x in selenium_request_keys + scrapy_request_keys: + kwargs.setdefault(x, getattr(self, x)) + cls = kwargs.pop('cls', self.__class__) + return cls(*args, **kwargs)