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)