@@ -5036,52 +5036,119 @@ def hide_element(self, selector, by="css selector"):
5036
5036
"""Hide the first element on the page that matches the selector."""
5037
5037
self.__check_scope()
5038
5038
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)
5043
5052
5044
5053
def hide_elements(self, selector, by="css selector"):
5045
5054
"""Hide all elements on the page that match the selector."""
5046
5055
self.__check_scope()
5047
5056
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)
5051
5073
5052
5074
def show_element(self, selector, by="css selector"):
5053
5075
"""Show the first element on the page that matches the selector."""
5054
5076
self.__check_scope()
5055
5077
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)
5060
5092
5061
5093
def show_elements(self, selector, by="css selector"):
5062
5094
"""Show all elements on the page that match the selector."""
5063
5095
self.__check_scope()
5064
5096
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)
5068
5113
5069
5114
def remove_element(self, selector, by="css selector"):
5070
5115
"""Remove the first element on the page that matches the selector."""
5071
5116
self.__check_scope()
5072
5117
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)
5077
5132
5078
5133
def remove_elements(self, selector, by="css selector"):
5079
5134
"""Remove all elements on the page that match the selector."""
5080
5135
self.__check_scope()
5081
5136
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)
5085
5152
5086
5153
def ad_block(self):
5087
5154
"""Block ads that appear on the current web page."""
0 commit comments