@@ -112,20 +112,25 @@ def is_element_enabled(driver, selector, by="css selector"):
112
112
return False
113
113
114
114
115
- def is_text_visible (driver , text , selector , by = "css selector" ):
115
+ def is_text_visible (driver , text , selector , by = "css selector" , browser = None ):
116
116
"""
117
- Returns whether the specified text is visible in the specified selector.
117
+ Returns whether the text substring is visible in the given selector.
118
118
@Params
119
119
driver - the webdriver object (required)
120
- text - the text string to search for
120
+ text - the text string to search for (required)
121
121
selector - the locator for identifying the page element (required)
122
122
by - the type of selector being used (Default: By.CSS_SELECTOR)
123
123
@Returns
124
124
Boolean (is text visible)
125
125
"""
126
126
try :
127
127
element = driver .find_element (by = by , value = selector )
128
- return element .is_displayed () and text in element .text
128
+ element_text = element .text
129
+ if element .tag_name == "input" or element .tag_name == "textarea" :
130
+ element_text = element .get_property ("value" )
131
+ elif browser == "safari" :
132
+ element_text = element .get_attribute ("innerText" )
133
+ return element .is_displayed () and text in element_text
129
134
except Exception :
130
135
return False
131
136
@@ -470,7 +475,7 @@ def wait_for_text_visible(
470
475
try :
471
476
element = driver .find_element (by = by , value = selector )
472
477
is_present = True
473
- if element .tag_name == "input" :
478
+ if element .tag_name == "input" or element . tag_name == "textarea" :
474
479
if (
475
480
element .is_displayed ()
476
481
and text in element .get_property ("value" )
@@ -574,7 +579,7 @@ def wait_for_exact_text_visible(
574
579
try :
575
580
element = driver .find_element (by = by , value = selector )
576
581
is_present = True
577
- if element .tag_name == "input" :
582
+ if element .tag_name == "input" or element . tag_name == "textarea" :
578
583
if (
579
584
element .is_displayed ()
580
585
and text .strip () == element .get_property ("value" ).strip ()
@@ -934,7 +939,12 @@ def wait_for_element_not_visible(
934
939
935
940
936
941
def wait_for_text_not_visible (
937
- driver , text , selector , by = "css selector" , timeout = settings .LARGE_TIMEOUT
942
+ driver ,
943
+ text ,
944
+ selector ,
945
+ by = "css selector" ,
946
+ timeout = settings .LARGE_TIMEOUT ,
947
+ browser = None ,
938
948
):
939
949
"""
940
950
Searches for the text in the element of the given selector on the page.
@@ -953,7 +963,7 @@ def wait_for_text_not_visible(
953
963
stop_ms = start_ms + (timeout * 1000.0 )
954
964
for x in range (int (timeout * 10 )):
955
965
shared_utils .check_if_time_limit_exceeded ()
956
- if not is_text_visible (driver , text , selector , by = by ):
966
+ if not is_text_visible (driver , text , selector , by = by , browser = browser ):
957
967
return True
958
968
now_ms = time .time () * 1000.0
959
969
if now_ms >= stop_ms :
0 commit comments