Skip to content

Commit da76064

Browse files
committed
Update Selenium IDE converter tool
1 parent 8c40593 commit da76064

File tree

1 file changed

+65
-1
lines changed

1 file changed

+65
-1
lines changed

integrations/selenium_ide/convert_ide.py

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def main():
3131
ide_base_url = ""
3232
in_test_method = False
3333
has_unicode = False
34+
uses_keys = False
3435

3536
f = open(webdriver_python_file, 'r')
3637
all_code = f.read()
@@ -147,6 +148,20 @@ def main():
147148
seleniumbase_lines.append(command)
148149
continue
149150

151+
# Handle .find_element_by_id() + .send_keys(Keys.<KEY>)
152+
data = re.match(
153+
'''^(\s*)driver\.find_element_by_id\(\"(\S+)\"\)'''
154+
'''\.send_keys\(Keys\.([\S]+)\)\s*$''', line)
155+
if data:
156+
uses_keys = True
157+
whitespace = data.group(1)
158+
css_selector = '#%s' % data.group(2)
159+
key = 'Keys.%s' % data.group(3)
160+
command = '''%sself.send_keys('%s', %s)''' % (
161+
whitespace, css_selector, key)
162+
seleniumbase_lines.append(command)
163+
continue
164+
150165
# Handle .find_element_by_name() + .click()
151166
data = re.match(
152167
'''^(\s*)driver\.find_element_by_name\(\"(\S+)\"\)'''
@@ -171,6 +186,20 @@ def main():
171186
seleniumbase_lines.append(command)
172187
continue
173188

189+
# Handle .find_element_by_name() + .send_keys(Keys.<KEY>)
190+
data = re.match(
191+
'''^(\s*)driver\.find_element_by_name\(\"(\S+)\"\)'''
192+
'''\.send_keys\(Keys\.([\S]+)\)\s*$''', line)
193+
if data:
194+
uses_keys = True
195+
whitespace = data.group(1)
196+
css_selector = '[name="%s"]' % data.group(2)
197+
key = 'Keys.%s' % data.group(3)
198+
command = '''%sself.send_keys('%s', %s)''' % (
199+
whitespace, css_selector, key)
200+
seleniumbase_lines.append(command)
201+
continue
202+
174203
# Handle .find_element_by_css_selector() + .click()
175204
data = re.match(
176205
'''^(\s*)driver\.find_element_by_css_selector\(\"([\S\s]+)\"\)'''
@@ -199,6 +228,22 @@ def main():
199228
seleniumbase_lines.append(command)
200229
continue
201230

231+
# Handle .find_element_by_css_selector() + .send_keys(Keys.<KEY>)
232+
data = re.match(
233+
'''^(\s*)driver\.find_element_by_css_selector\(\"([\S\s]+)\"\)'''
234+
'''\.send_keys\(Keys\.([\S]+)\)\s*$''', line)
235+
if data:
236+
uses_keys = True
237+
whitespace = data.group(1)
238+
css_selector = '%s' % data.group(2)
239+
key = 'Keys.%s' % data.group(3)
240+
command = '''%sself.send_keys('%s', %s)''' % (
241+
whitespace, css_selector, key)
242+
if command.count('\\"') == command.count('"'):
243+
command = command.replace('\\"', '"')
244+
seleniumbase_lines.append(command)
245+
continue
246+
202247
# Handle .find_element_by_xpath() + .send_keys()
203248
data = re.match(
204249
'''^(\s*)driver\.find_element_by_xpath\(\"([\S\s]+)\"\)'''
@@ -214,6 +259,22 @@ def main():
214259
seleniumbase_lines.append(command)
215260
continue
216261

262+
# Handle .find_element_by_xpath() + .send_keys(Keys.<KEY>)
263+
data = re.match(
264+
'''^(\s*)driver\.find_element_by_xpath\(\"([\S\s]+)\"\)'''
265+
'''\.send_keys\(Keys\.([\S]+)\)\s*$''', line)
266+
if data:
267+
uses_keys = True
268+
whitespace = data.group(1)
269+
css_selector = '%s' % data.group(2)
270+
key = 'Keys.%s' % data.group(3)
271+
command = '''%sself.send_keys('%s', %s)''' % (
272+
whitespace, css_selector, key)
273+
if command.count('\\"') == command.count('"'):
274+
command = command.replace('\\"', '"')
275+
seleniumbase_lines.append(command)
276+
continue
277+
217278
# Handle Select / by_css_selector() / select_by_visible_text()
218279
data = re.match(
219280
'''^(\s*)Select\(driver\.find_element_by_css_selector\('''
@@ -478,6 +539,9 @@ def main():
478539
seleniumbase_code = ""
479540
if has_unicode:
480541
seleniumbase_code = "# -*- coding: utf-8 -*-\n"
542+
if uses_keys:
543+
seleniumbase_code += (
544+
"from selenium.webdriver.common.keys import Keys\n")
481545
for line in seleniumbase_lines:
482546
seleniumbase_code += line
483547
seleniumbase_code += "\n"
@@ -489,7 +553,7 @@ def main():
489553
out_file = codecs.open(converted_file_name, "w+")
490554
out_file.writelines(seleniumbase_code)
491555
out_file.close()
492-
print('>>> "%s" successfully created from %s\n' % (
556+
print('\n>>> [%s] was created from [%s]\n' % (
493557
converted_file_name, webdriver_python_file))
494558

495559

0 commit comments

Comments
 (0)