Skip to content

Commit 03e2e9a

Browse files
authored
Merge pull request #961 from seleniumbase/updates-to-the-page-object-generator
Update the instant page-object-generator tool
2 parents ec37d83 + 9b2688c commit 03e2e9a

File tree

4 files changed

+344
-3
lines changed

4 files changed

+344
-3
lines changed

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ platformdirs==2.0.2;python_version<"3.6"
8686
platformdirs==2.2.0;python_version>="3.6"
8787
pathlib2==2.3.5;python_version<"3.5"
8888
importlib-metadata==2.0.0;python_version<"3.6"
89-
virtualenv>=20.7.1
89+
virtualenv>=20.7.2
9090
pymysql==0.10.1;python_version<"3.6"
9191
pymysql==1.0.2;python_version>="3.6"
9292
pyotp==2.6.0

seleniumbase/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# seleniumbase package
2-
__version__ = "1.63.22"
2+
__version__ = "1.63.23"

seleniumbase/console_scripts/objectify.py

Lines changed: 341 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,11 @@ def process_test_file(
230230
for line in code_lines:
231231
line = line.rstrip()
232232

233+
# Keep lines with "%s" in them as they were
234+
if r"%s" in line:
235+
seleniumbase_lines.append(line)
236+
continue
237+
233238
# Handle self.click(SELECTOR)
234239
if not object_dict:
235240
data = re.match(
@@ -387,6 +392,59 @@ def process_test_file(
387392
seleniumbase_lines.append(command)
388393
continue
389394

395+
# Handle self.double_click(SELECTOR)
396+
if not object_dict:
397+
data = re.match(
398+
r"""^(\s*)self\.double_click"""
399+
r"""\((r?['"][\S\s]+['"])\)([\S\s]*)"""
400+
r"""$""",
401+
line,
402+
)
403+
else:
404+
data = re.match(
405+
r"""^(\s*)self\.double_click"""
406+
r"""\(([\S]+)\)([\S\s]*)"""
407+
r"""$""",
408+
line,
409+
)
410+
if data:
411+
whitespace = data.group(1)
412+
selector = "%s" % data.group(2)
413+
selector = remove_extra_slashes(selector)
414+
page_selectors.append(selector)
415+
comments = data.group(3)
416+
command = """%sself.double_click(%s)%s""" % (
417+
whitespace,
418+
selector,
419+
comments,
420+
)
421+
if selector_dict:
422+
if add_comments:
423+
comments = " # %s" % selector
424+
selector = optimize_selector(selector)
425+
if selector in selector_dict.keys():
426+
selector_object = selector_dict[selector]
427+
changed.append(selector_object.split(".")[0])
428+
command = """%sself.double_click(%s)%s""" % (
429+
whitespace,
430+
selector_object,
431+
comments,
432+
)
433+
if object_dict:
434+
if not add_comments:
435+
comments = ""
436+
object_name = selector
437+
if object_name in object_dict.keys():
438+
selector_object = object_dict[object_name]
439+
changed.append(object_name.split(".")[0])
440+
command = """%sself.double_click(%s)%s""" % (
441+
whitespace,
442+
selector_object,
443+
comments,
444+
)
445+
seleniumbase_lines.append(command)
446+
continue
447+
390448
# Handle self.click_visible_elements(SELECTOR)
391449
if not object_dict:
392450
data = re.match(
@@ -440,6 +498,112 @@ def process_test_file(
440498
seleniumbase_lines.append(command)
441499
continue
442500

501+
# Handle self.highlight(SELECTOR)
502+
if not object_dict:
503+
data = re.match(
504+
r"""^(\s*)self\.highlight"""
505+
r"""\((r?['"][\S\s]+['"])\)([\S\s]*)"""
506+
r"""$""",
507+
line,
508+
)
509+
else:
510+
data = re.match(
511+
r"""^(\s*)self\.highlight"""
512+
r"""\(([\S]+)\)([\S\s]*)"""
513+
r"""$""",
514+
line,
515+
)
516+
if data:
517+
whitespace = data.group(1)
518+
selector = "%s" % data.group(2)
519+
selector = remove_extra_slashes(selector)
520+
page_selectors.append(selector)
521+
comments = data.group(3)
522+
command = """%sself.highlight(%s)%s""" % (
523+
whitespace,
524+
selector,
525+
comments,
526+
)
527+
if selector_dict:
528+
if add_comments:
529+
comments = " # %s" % selector
530+
selector = optimize_selector(selector)
531+
if selector in selector_dict.keys():
532+
selector_object = selector_dict[selector]
533+
changed.append(selector_object.split(".")[0])
534+
command = """%sself.highlight(%s)%s""" % (
535+
whitespace,
536+
selector_object,
537+
comments,
538+
)
539+
if object_dict:
540+
if not add_comments:
541+
comments = ""
542+
object_name = selector
543+
if object_name in object_dict.keys():
544+
selector_object = object_dict[object_name]
545+
changed.append(object_name.split(".")[0])
546+
command = """%sself.highlight(%s)%s""" % (
547+
whitespace,
548+
selector_object,
549+
comments,
550+
)
551+
seleniumbase_lines.append(command)
552+
continue
553+
554+
# Handle self.highlight_click(SELECTOR)
555+
if not object_dict:
556+
data = re.match(
557+
r"""^(\s*)self\.highlight_click"""
558+
r"""\((r?['"][\S\s]+['"])\)([\S\s]*)"""
559+
r"""$""",
560+
line,
561+
)
562+
else:
563+
data = re.match(
564+
r"""^(\s*)self\.highlight_click"""
565+
r"""\(([\S]+)\)([\S\s]*)"""
566+
r"""$""",
567+
line,
568+
)
569+
if data:
570+
whitespace = data.group(1)
571+
selector = "%s" % data.group(2)
572+
selector = remove_extra_slashes(selector)
573+
page_selectors.append(selector)
574+
comments = data.group(3)
575+
command = """%sself.highlight_click(%s)%s""" % (
576+
whitespace,
577+
selector,
578+
comments,
579+
)
580+
if selector_dict:
581+
if add_comments:
582+
comments = " # %s" % selector
583+
selector = optimize_selector(selector)
584+
if selector in selector_dict.keys():
585+
selector_object = selector_dict[selector]
586+
changed.append(selector_object.split(".")[0])
587+
command = """%sself.highlight_click(%s)%s""" % (
588+
whitespace,
589+
selector_object,
590+
comments,
591+
)
592+
if object_dict:
593+
if not add_comments:
594+
comments = ""
595+
object_name = selector
596+
if object_name in object_dict.keys():
597+
selector_object = object_dict[object_name]
598+
changed.append(object_name.split(".")[0])
599+
command = """%sself.highlight_click(%s)%s""" % (
600+
whitespace,
601+
selector_object,
602+
comments,
603+
)
604+
seleniumbase_lines.append(command)
605+
continue
606+
443607
# Handle self.switch_to_frame(SELECTOR)
444608
if not object_dict:
445609
data = re.match(
@@ -493,6 +657,59 @@ def process_test_file(
493657
seleniumbase_lines.append(command)
494658
continue
495659

660+
# Handle self.switch_to_frame_of_element(SELECTOR)
661+
if not object_dict:
662+
data = re.match(
663+
r"""^(\s*)self\.switch_to_frame_of_element"""
664+
r"""\((r?['"][\S\s]+['"])\)([\S\s]*)"""
665+
r"""$""",
666+
line,
667+
)
668+
else:
669+
data = re.match(
670+
r"""^(\s*)self\.switch_to_frame_of_element"""
671+
r"""\(([\S]+)\)([\S\s]*)"""
672+
r"""$""",
673+
line,
674+
)
675+
if data:
676+
whitespace = data.group(1)
677+
selector = "%s" % data.group(2)
678+
selector = remove_extra_slashes(selector)
679+
page_selectors.append(selector)
680+
comments = data.group(3)
681+
command = """%sself.switch_to_frame_of_element(%s)%s""" % (
682+
whitespace,
683+
selector,
684+
comments,
685+
)
686+
if selector_dict:
687+
if add_comments:
688+
comments = " # %s" % selector
689+
selector = optimize_selector(selector)
690+
if selector in selector_dict.keys():
691+
selector_object = selector_dict[selector]
692+
changed.append(selector_object.split(".")[0])
693+
command = """%sself.switch_to_frame_of_element(%s)%s""" % (
694+
whitespace,
695+
selector_object,
696+
comments,
697+
)
698+
if object_dict:
699+
if not add_comments:
700+
comments = ""
701+
object_name = selector
702+
if object_name in object_dict.keys():
703+
selector_object = object_dict[object_name]
704+
changed.append(object_name.split(".")[0])
705+
command = """%sself.switch_to_frame_of_element(%s)%s""" % (
706+
whitespace,
707+
selector_object,
708+
comments,
709+
)
710+
seleniumbase_lines.append(command)
711+
continue
712+
496713
# Handle self.assert_element(SELECTOR)
497714
if not object_dict:
498715
data = re.match(
@@ -1991,6 +2208,130 @@ def process_test_file(
19912208
seleniumbase_lines.append(command)
19922209
continue
19932210

2211+
# Handle self.set_attribute(SELECTOR, ATTRIBUTE, VALUE)
2212+
if not object_dict:
2213+
data = re.match(
2214+
r"""^(\s*)self\.set_attribute"""
2215+
r"""\((r?['"][\S\s]+['"])"""
2216+
r""",\s?([\S\s]+),\s?([\S\s]+)\)([\S\s]*)"""
2217+
r"""$""",
2218+
line,
2219+
)
2220+
else:
2221+
data = re.match(
2222+
r"""^(\s*)self\.set_attribute"""
2223+
r"""\(([\S]+),\s?([\S\s]+),\s?([\S\s]+)\)([\S\s]*)"""
2224+
r"""$""",
2225+
line,
2226+
)
2227+
if data:
2228+
whitespace = data.group(1)
2229+
selector = "%s" % data.group(2)
2230+
selector = remove_extra_slashes(selector)
2231+
page_selectors.append(selector)
2232+
attribute = data.group(3)
2233+
value = data.group(4)
2234+
comments = data.group(5)
2235+
command = """%sself.set_attribute(%s, %s, %s)%s""" % (
2236+
whitespace,
2237+
selector,
2238+
attribute,
2239+
value,
2240+
comments,
2241+
)
2242+
if selector_dict:
2243+
if add_comments:
2244+
comments = " # %s" % selector
2245+
selector = optimize_selector(selector)
2246+
if selector in selector_dict.keys():
2247+
selector_object = selector_dict[selector]
2248+
changed.append(selector_object.split(".")[0])
2249+
command = """%sself.set_attribute(%s, %s, %s)%s""" % (
2250+
whitespace,
2251+
selector_object,
2252+
attribute,
2253+
value,
2254+
comments,
2255+
)
2256+
if object_dict:
2257+
if not add_comments:
2258+
comments = ""
2259+
object_name = selector
2260+
if object_name in object_dict.keys():
2261+
selector_object = object_dict[object_name]
2262+
changed.append(object_name.split(".")[0])
2263+
command = """%sself.set_attribute(%s, %s, %s)%s""" % (
2264+
whitespace,
2265+
selector_object,
2266+
attribute,
2267+
value,
2268+
comments,
2269+
)
2270+
seleniumbase_lines.append(command)
2271+
continue
2272+
2273+
# Handle self.set_attributes(SELECTOR, ATTRIBUTE, VALUE)
2274+
if not object_dict:
2275+
data = re.match(
2276+
r"""^(\s*)self\.set_attributes"""
2277+
r"""\((r?['"][\S\s]+['"]),"""
2278+
r"""\s?([\S\s]+),\s?([\S\s]+)\)([\S\s]*)"""
2279+
r"""$""",
2280+
line,
2281+
)
2282+
else:
2283+
data = re.match(
2284+
r"""^(\s*)self\.set_attributes"""
2285+
r"""\(([\S]+),\s?([\S\s]+),\s?([\S\s]+)\)([\S\s]*)"""
2286+
r"""$""",
2287+
line,
2288+
)
2289+
if data:
2290+
whitespace = data.group(1)
2291+
selector = "%s" % data.group(2)
2292+
selector = remove_extra_slashes(selector)
2293+
page_selectors.append(selector)
2294+
attribute = data.group(3)
2295+
value = data.group(4)
2296+
comments = data.group(5)
2297+
command = """%sself.set_attributes(%s, %s, %s)%s""" % (
2298+
whitespace,
2299+
selector,
2300+
attribute,
2301+
value,
2302+
comments,
2303+
)
2304+
if selector_dict:
2305+
if add_comments:
2306+
comments = " # %s" % selector
2307+
selector = optimize_selector(selector)
2308+
if selector in selector_dict.keys():
2309+
selector_object = selector_dict[selector]
2310+
changed.append(selector_object.split(".")[0])
2311+
command = """%sself.set_attributes(%s, %s, %s)%s""" % (
2312+
whitespace,
2313+
selector_object,
2314+
attribute,
2315+
value,
2316+
comments,
2317+
)
2318+
if object_dict:
2319+
if not add_comments:
2320+
comments = ""
2321+
object_name = selector
2322+
if object_name in object_dict.keys():
2323+
selector_object = object_dict[object_name]
2324+
changed.append(object_name.split(".")[0])
2325+
command = """%sself.set_attributes(%s, %s, %s)%s""" % (
2326+
whitespace,
2327+
selector_object,
2328+
attribute,
2329+
value,
2330+
comments,
2331+
)
2332+
seleniumbase_lines.append(command)
2333+
continue
2334+
19942335
# Handle VAR = self.get_attribute(SELECTOR, ATTRIBUTE)
19952336
if not object_dict:
19962337
data = re.match(

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@
201201
'platformdirs==2.2.0;python_version>="3.6"',
202202
'pathlib2==2.3.5;python_version<"3.5"', # Sync with "virtualenv"
203203
'importlib-metadata==2.0.0;python_version<"3.6"', # Sync "virtualenv"
204-
"virtualenv>=20.7.1", # Sync with importlib-metadata and pathlib2
204+
"virtualenv>=20.7.2", # Sync with importlib-metadata and pathlib2
205205
'pymysql==0.10.1;python_version<"3.6"',
206206
'pymysql==1.0.2;python_version>="3.6"',
207207
"pyotp==2.6.0",

0 commit comments

Comments
 (0)