diff --git a/DrissionPage/__init__.py b/DrissionPage/__init__.py index a77e654..a071967 100644 --- a/DrissionPage/__init__.py +++ b/DrissionPage/__init__.py @@ -14,4 +14,4 @@ from ._configs.chromium_options import ChromiumOptions from ._configs.session_options import SessionOptions __all__ = ['ChromiumPage', 'ChromiumOptions', 'SessionOptions', 'SessionPage', 'WebPage', '__version__'] -__version__ = '4.0.4.20' +__version__ = '4.0.4.21' diff --git a/DrissionPage/_functions/web.py b/DrissionPage/_functions/web.py index 271bf9d..341e14e 100644 --- a/DrissionPage/_functions/web.py +++ b/DrissionPage/_functions/web.py @@ -207,9 +207,9 @@ def cookies_to_tuple(cookies): elif isinstance(cookies, str): c_dict = {} - for attr in cookies.strip().rstrip(';,').split(',' if ',' in cookies else ';'): + for attr in cookies.strip().rstrip(';, ').split(',' if ',' in cookies else ';'): attr_val = attr.strip().split('=', 1) - c_dict[attr_val[0]] = attr_val[1] if len(attr_val) == 2 else '' + c_dict[attr_val[0]] = attr_val[1] if len(attr_val) == 2 else True cookies = _dict_cookies_to_tuple(c_dict) elif isinstance(cookies, dict): @@ -300,6 +300,9 @@ def set_browser_cookies(page, cookies): except Exception: pass + if not page._browser_url.startswith('http'): + raise RuntimeError(f'未设置域名,请设置cookie的domain参数或先访问一个网站。{cookie}') + ex_url = extract(page._browser_url) d_list = ex_url.subdomain.split('.') d_list.append(f'{ex_url.domain}.{ex_url.suffix}' if ex_url.suffix else ex_url.domain) diff --git a/DrissionPage/_units/waiter.py b/DrissionPage/_units/waiter.py index f244479..4e6e3c4 100644 --- a/DrissionPage/_units/waiter.py +++ b/DrissionPage/_units/waiter.py @@ -98,8 +98,12 @@ class BaseWaiter(OriginWaiter): driver.run('DOM.discardSearchResults', searchId=r['searchId']) return False searchId = r['searchId'] - ids = driver.run('DOM.getSearchResults', searchId=r['searchId'], fromIndex=0, - toIndex=r['resultCount'] - 1)['nodeIds'] + ids = driver.run('DOM.getSearchResults', searchId=searchId, fromIndex=0, + toIndex=r['resultCount']) + if 'error' in ids: + return False + + ids = ids['nodeIds'] res = False for i in ids: r = driver.run('DOM.describeNode', nodeId=i)