Skip to content

Commit 051a56d

Browse files
committed
Have methods use JS over jQuery when possible
1 parent 57171f2 commit 051a56d

File tree

1 file changed

+88
-21
lines changed

1 file changed

+88
-21
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 88 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5036,52 +5036,119 @@ def hide_element(self, selector, by="css selector"):
50365036
"""Hide the first element on the page that matches the selector."""
50375037
self.__check_scope()
50385038
selector, by = self.__recalculate_selector(selector, by)
5039-
selector = self.convert_to_css_selector(selector, by=by)
5040-
selector = self.__make_css_match_first_element_only(selector)
5041-
hide_script = """jQuery('%s').hide();""" % selector
5042-
self.safe_execute_script(hide_script)
5039+
css_selector = self.convert_to_css_selector(selector, by=by)
5040+
if ":contains(" in css_selector:
5041+
selector = self.__make_css_match_first_element_only(css_selector)
5042+
script = """jQuery('%s').hide();""" % selector
5043+
self.safe_execute_script(script)
5044+
else:
5045+
css_selector = re.escape(css_selector) # Add "\\" to special chars
5046+
css_selector = self.__escape_quotes_if_needed(css_selector)
5047+
script = (
5048+
'const e = document.querySelector("%s");'
5049+
'e.style.display="none";e.style.visibility="hidden";'
5050+
% css_selector)
5051+
self.execute_script(script)
50435052

50445053
def hide_elements(self, selector, by="css selector"):
50455054
"""Hide all elements on the page that match the selector."""
50465055
self.__check_scope()
50475056
selector, by = self.__recalculate_selector(selector, by)
5048-
selector = self.convert_to_css_selector(selector, by=by)
5049-
hide_script = """jQuery('%s').hide();""" % selector
5050-
self.safe_execute_script(hide_script)
5057+
css_selector = self.convert_to_css_selector(selector, by=by)
5058+
if ":contains(" in css_selector:
5059+
script = """jQuery('%s').hide();""" % css_selector
5060+
self.safe_execute_script(script)
5061+
else:
5062+
css_selector = re.escape(css_selector) # Add "\\" to special chars
5063+
css_selector = self.__escape_quotes_if_needed(css_selector)
5064+
script = (
5065+
"""var $elements = document.querySelectorAll('%s');
5066+
var index = 0, length = $elements.length;
5067+
for(; index < length; index++){
5068+
$elements[index].style.display="none";
5069+
$elements[index].style.visibility="hidden";}"""
5070+
% css_selector
5071+
)
5072+
self.execute_script(script)
50515073

50525074
def show_element(self, selector, by="css selector"):
50535075
"""Show the first element on the page that matches the selector."""
50545076
self.__check_scope()
50555077
selector, by = self.__recalculate_selector(selector, by)
5056-
selector = self.convert_to_css_selector(selector, by=by)
5057-
selector = self.__make_css_match_first_element_only(selector)
5058-
show_script = """jQuery('%s').show(0);""" % selector
5059-
self.safe_execute_script(show_script)
5078+
css_selector = self.convert_to_css_selector(selector, by=by)
5079+
if ":contains(" in css_selector:
5080+
selector = self.__make_css_match_first_element_only(css_selector)
5081+
script = """jQuery('%s').show(0);""" % selector
5082+
self.safe_execute_script(script)
5083+
else:
5084+
css_selector = re.escape(css_selector) # Add "\\" to special chars
5085+
css_selector = self.__escape_quotes_if_needed(css_selector)
5086+
script = (
5087+
'const e = document.querySelector("%s");'
5088+
'e.style.display="";e.style.visibility="visible";'
5089+
% css_selector
5090+
)
5091+
self.execute_script(script)
50605092

50615093
def show_elements(self, selector, by="css selector"):
50625094
"""Show all elements on the page that match the selector."""
50635095
self.__check_scope()
50645096
selector, by = self.__recalculate_selector(selector, by)
5065-
selector = self.convert_to_css_selector(selector, by=by)
5066-
show_script = """jQuery('%s').show(0);""" % selector
5067-
self.safe_execute_script(show_script)
5097+
css_selector = self.convert_to_css_selector(selector, by=by)
5098+
if ":contains(" in css_selector:
5099+
script = """jQuery('%s').show(0);""" % css_selector
5100+
self.safe_execute_script(script)
5101+
else:
5102+
css_selector = re.escape(css_selector) # Add "\\" to special chars
5103+
css_selector = self.__escape_quotes_if_needed(css_selector)
5104+
script = (
5105+
"""var $elements = document.querySelectorAll('%s');
5106+
var index = 0, length = $elements.length;
5107+
for(; index < length; index++){
5108+
$elements[index].style.display="";
5109+
$elements[index].style.visibility="visible";}"""
5110+
% css_selector
5111+
)
5112+
self.execute_script(script)
50685113

50695114
def remove_element(self, selector, by="css selector"):
50705115
"""Remove the first element on the page that matches the selector."""
50715116
self.__check_scope()
50725117
selector, by = self.__recalculate_selector(selector, by)
5073-
selector = self.convert_to_css_selector(selector, by=by)
5074-
selector = self.__make_css_match_first_element_only(selector)
5075-
remove_script = """jQuery('%s').remove();""" % selector
5076-
self.safe_execute_script(remove_script)
5118+
css_selector = self.convert_to_css_selector(selector, by=by)
5119+
if ":contains(" in css_selector:
5120+
selector = self.__make_css_match_first_element_only(css_selector)
5121+
script = """jQuery('%s').remove();""" % selector
5122+
self.safe_execute_script(script)
5123+
else:
5124+
css_selector = re.escape(css_selector) # Add "\\" to special chars
5125+
css_selector = self.__escape_quotes_if_needed(css_selector)
5126+
script = (
5127+
'const e = document.querySelector("%s");'
5128+
'e.parentElement.removeChild(e);'
5129+
% css_selector
5130+
)
5131+
self.execute_script(script)
50775132

50785133
def remove_elements(self, selector, by="css selector"):
50795134
"""Remove all elements on the page that match the selector."""
50805135
self.__check_scope()
50815136
selector, by = self.__recalculate_selector(selector, by)
5082-
selector = self.convert_to_css_selector(selector, by=by)
5083-
remove_script = """jQuery('%s').remove();""" % selector
5084-
self.safe_execute_script(remove_script)
5137+
css_selector = self.convert_to_css_selector(selector, by=by)
5138+
if ":contains(" in css_selector:
5139+
script = """jQuery('%s').remove();""" % css_selector
5140+
self.safe_execute_script(script)
5141+
else:
5142+
css_selector = re.escape(css_selector) # Add "\\" to special chars
5143+
css_selector = self.__escape_quotes_if_needed(css_selector)
5144+
script = (
5145+
"""var $elements = document.querySelectorAll('%s');
5146+
var index = 0, length = $elements.length;
5147+
for(; index < length; index++){
5148+
$elements[index].remove();}"""
5149+
% css_selector
5150+
)
5151+
self.execute_script(script)
50855152

50865153
def ad_block(self):
50875154
"""Block ads that appear on the current web page."""

0 commit comments

Comments
 (0)