MCPcopy Create free account
hub / github.com/seleniumbase/SeleniumBase / scan_objects_file

Function scan_objects_file

seleniumbase/console_scripts/sb_objectify.py:147–199  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

145
146
147def scan_objects_file():
148 if not os.path.exists(PAGE_OBJECTS_FILE):
149 create_objects_file()
150
151 page_selectors = {}
152 with open(PAGE_OBJECTS_FILE, mode="r", encoding="utf-8") as f:
153 all_code = f.read()
154
155 var_names = []
156 selectors = []
157 current_class = "None"
158 selector_list_dict = {} # Key = class name / Values are name-value tuples
159 selector_list_dict[current_class] = []
160 selector_list_dict["Page"] = []
161 code_lines = all_code.split("\n")
162 for line in code_lines:
163 line = line.rstrip()
164 # Handle: class CLASSNAME(object): OR class CLASSNAME():
165 data = re.match(r"""^(\s*)class\s+([\S]+)\((object|)\):\s*$""", line)
166 if data:
167 whitespace = data.group(1)
168 name = "%s" % data.group(2)
169 current_class = name
170 selector_list_dict[current_class] = []
171 page_selectors["class %s" % name] = "."
172
173 # Handle: SELECTOR_NAME = "SELECTOR"
174 data = re.match(r"""^(\s*)(\S+)\s*=\s*([\S\s]+)\s*$""", line)
175 if data:
176 whitespace = data.group(1)
177 name = data.group(2)
178 selector = data.group(3)
179 selector = remove_extra_slashes(selector)
180 page_selectors[name] = selector
181 var_names.append(name)
182 selectors.append(selector)
183 if whitespace == "":
184 current_class = "None"
185 if (len(selector) > 2 and selector[0] == "'") and (
186 selector[-1] == "'" and '"' not in selector[1:-1]
187 ):
188 selector = '"' + selector[1:-1] + '"'
189 if "\\[" in selector or "\\]" in selector or "\\." in selector:
190 if selector[0] != "r":
191 selector = "r" + selector
192 selector_list_dict[current_class].append((name, selector))
193
194 if "class Page" not in page_selectors.keys():
195 page_selectors["class Page"] = "."
196
197 if len(selector_list_dict["Page"]) == 0:
198 selector_list_dict["Page"].append(("html", '"html"'))
199 return var_names, selectors, selector_list_dict
200
201
202def optimize_selector(selector):

Callers 1

mainFunction · 0.85

Calls 2

create_objects_fileFunction · 0.85
remove_extra_slashesFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…