@@ -187,46 +187,23 @@ def find_element_by_text(self, text, tag_name=None, timeout=None):
187187 element with the given tag. (Eg: a, button, div, script, span)"""
188188 if not timeout :
189189 timeout = settings .SMALL_TIMEOUT
190- self .__add_light_pause ()
191- time_now = time .time ()
192- self .assert_text (text , timeout = timeout )
193- spent = int (time .time () - time_now )
194- remaining = 1 + timeout - spent
195- if tag_name :
196- self .assert_element (tag_name , timeout = remaining )
197- elements = self .loop .run_until_complete (
198- self .page .find_elements_by_text (text = text )
199- )
200190 if tag_name :
201- tag_name = tag_name .lower ().strip ()
202- for element in elements :
203- if element and not tag_name :
204- element = self .__add_sync_methods (element )
205- return self .__add_sync_methods (element )
206- elif (
207- element
208- and tag_name in element .tag_name .lower ()
209- and text .strip () in element .text
210- ):
211- element = self .__add_sync_methods (element )
212- return self .__add_sync_methods (element )
213- elif (
214- element
215- and element .parent
216- and tag_name in element .parent .tag_name .lower ()
217- and text .strip () in element .parent .text
218- ):
219- element = self .__add_sync_methods (element .parent )
220- return self .__add_sync_methods (element )
221- elif (
222- element
223- and element .parent
224- and element .parent .parent
225- and tag_name in element .parent .parent .tag_name .lower ()
226- and text .strip () in element .parent .parent .text
227- ):
228- element = self .__add_sync_methods (element .parent .parent )
229- return self .__add_sync_methods (element )
191+ try :
192+ return self .find_element (
193+ '%s:contains("%s")' % (tag_name , text ), timeout = timeout
194+ )
195+ except Exception :
196+ pass # The exception will be raised later
197+ else :
198+ self .__add_light_pause ()
199+ self .assert_text (text , timeout = timeout )
200+ elements = self .loop .run_until_complete (
201+ self .page .find_elements_by_text (text = text )
202+ )
203+ for element in elements :
204+ if element :
205+ element = self .__add_sync_methods (element )
206+ return self .__add_sync_methods (element )
230207 plural = "s"
231208 if timeout == 1 :
232209 plural = ""
0 commit comments