Skip to content

Commit dd9a5f9

Browse files
committed
Fix issue with escaped characters in Behave ".feature" files
1 parent 22afd7d commit dd9a5f9

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

sbase/steps.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
from behave import step
22

33

4+
def normalize_text(text):
5+
text = text.replace("\\\\", "\\").replace("\\t", "\t").replace("\\n", "\n")
6+
text = text.replace('\\"', '"').replace("\\'", "'")
7+
return text
8+
9+
410
@step("Open '{url}'")
511
@step('Open "{url}"')
612
@step("Open URL '{url}'")
@@ -33,6 +39,7 @@ def click_element(context, selector):
3339
@step('Into "{selector}" type \'{text}\'')
3440
def type_text(context, selector, text):
3541
sb = context.sb
42+
text = normalize_text(text)
3643
sb.type(selector, text)
3744

3845

@@ -46,6 +53,7 @@ def type_text(context, selector, text):
4653
@step('Into "{selector}" add \'{text}\'')
4754
def add_text(context, text, selector):
4855
sb = context.sb
56+
text = normalize_text(text)
4957
sb.add_text(selector, text)
5058

5159

@@ -62,20 +70,23 @@ def assert_element(context, selector):
6270
@step('Assert text "{text}" in \'{selector}\'')
6371
def assert_text_in_element(context, text, selector):
6472
sb = context.sb
73+
text = normalize_text(text)
6574
sb.assert_text(text, selector)
6675

6776

6877
@step("Assert text '{text}'")
6978
@step('Assert text "{text}"')
7079
def assert_text(context, text):
7180
sb = context.sb
81+
text = normalize_text(text)
7282
sb.assert_text(text)
7383

7484

7585
@step("Assert exact text '{text}' in '{selector}'")
7686
@step('Assert exact text "{text}" in "{selector}"')
7787
def assert_exact_text(context, text, selector):
7888
sb = context.sb
89+
text = normalize_text(text)
7990
sb.assert_exact_text(text, selector)
8091

8192

@@ -139,6 +150,7 @@ def go_forward(context):
139150
@step('JS type text "{text}" into \'{selector}\'')
140151
def js_type(context, text, selector):
141152
sb = context.sb
153+
text = normalize_text(text)
142154
sb.js_type(selector, text)
143155

144156

@@ -148,6 +160,7 @@ def js_type(context, text, selector):
148160
@step('Set value of \'{selector}\' to "{text}"')
149161
def set_value(context, text, selector):
150162
sb = context.sb
163+
text = normalize_text(text)
151164
sb.set_value(selector, text)
152165

153166

@@ -258,6 +271,7 @@ def hover_and_click(context, hover_selector, click_selector):
258271
@step('Find "{selector}" and select \'{text}\'')
259272
def select_option_by_text(context, selector, text):
260273
sb = context.sb
274+
text = normalize_text(text)
261275
sb.select_option_by_text(selector, text)
262276

263277

@@ -267,6 +281,7 @@ def select_option_by_text(context, selector, text):
267281
@step('Find "{selector}" and select \'{text}\' by {option}')
268282
def select_option_by_option(context, selector, text, option):
269283
sb = context.sb
284+
text = normalize_text(text)
270285
if option.startswith("'") or option.startswith('"'):
271286
option = option[1:]
272287
if option.endswith("'") or option.endswith('"'):
@@ -440,13 +455,15 @@ def assert_element_not_visible(context, selector):
440455
@step('Assert link text "{text}"')
441456
def assert_link_text(context, text):
442457
sb = context.sb
458+
text = normalize_text(text)
443459
sb.assert_link_text(text)
444460

445461

446462
@step("Assert title '{title}'")
447463
@step('Assert title "{title}"')
448464
def assert_title(context, title):
449465
sb = context.sb
466+
title = normalize_text(title)
450467
sb.assert_title(title)
451468

452469

@@ -494,6 +511,7 @@ def assert_attribute(context, selector, attribute):
494511
@step('In \'{selector}\' assert attribute/value "{attribute}"/"{value}"')
495512
def assert_attribute_has_value(context, selector, attribute, value):
496513
sb = context.sb
514+
value = normalize_text(value)
497515
sb.assert_attribute(selector, attribute, value)
498516

499517

@@ -542,20 +560,23 @@ def deferred_assert_element_present(context, selector):
542560
@step('Deferred assert text "{text}" in \'{selector}\'')
543561
def deferred_assert_text_in_element(context, text, selector):
544562
sb = context.sb
563+
text = normalize_text(text)
545564
sb.deferred_assert_text(text, selector)
546565

547566

548567
@step("Deferred assert text '{text}'")
549568
@step('Deferred assert text "{text}"')
550569
def deferred_assert_text(context, text):
551570
sb = context.sb
571+
text = normalize_text(text)
552572
sb.deferred_assert_text(text)
553573

554574

555575
@step("Deferred assert exact text '{text}' in '{selector}'")
556576
@step('Deferred assert exact text "{text}" in "{selector}"')
557577
def deferred_assert_exact_text(context, text, selector):
558578
sb = context.sb
579+
text = normalize_text(text)
559580
sb.deferred_assert_exact_text(text, selector)
560581

561582

0 commit comments

Comments
 (0)