From b3d4cc67f4643d2436c3c71f883586d9d91850e7 Mon Sep 17 00:00:00 2001 From: g1879 Date: Wed, 2 Sep 2020 00:08:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=94=AF=E6=8C=81=E6=8C=89?= =?UTF-8?q?=E6=96=87=E6=9C=AC=E5=8C=B9=E9=85=8D=EF=BC=8C=E6=9C=AA=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/shadow_root_element.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/DrissionPage/shadow_root_element.py b/DrissionPage/shadow_root_element.py index 36c5a84..1e1e036 100644 --- a/DrissionPage/shadow_root_element.py +++ b/DrissionPage/shadow_root_element.py @@ -100,6 +100,27 @@ class ShadowRootElement(DrissionElement): except: return False + def _find_eles_by_text(self, text: str, mode: str = 'single', match: str = 'exact'): + eles = self.run_script('return arguments[0].querySelectorAll("*")') + from .driver_element import DriverElement + results = [] + for ele in eles: + txt = self.driver.execute_script( + 'if(arguments[0].firstChild!=null){return arguments[0].firstChild.nodeValue}', ele) + if match == 'exact': + if text == txt: + if mode == 'single': + return DriverElement(ele) + elif mode == 'all': + results.append(DriverElement(ele)) + elif match == 'fuzzy': + if txt and text in txt: + if mode == 'single': + return DriverElement(ele) + elif mode == 'all': + results.append(DriverElement(ele)) + return None if mode == 'single' else results + def get_css_from_str(loc: str) -> tuple: """处理元素查找语句 \n