-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbang_linux.py
executable file
·124 lines (109 loc) · 4.28 KB
/
bang_linux.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os
import re
import csv
import stat
imports = '''import new, sys, csv\n
from pyvirtualdisplay import Display\n'''
setups = ''' display = Display(visible=0, size=(1280, 1024))
display.start()
self.driver = webdriver.Chrome()
self.driver.set_window_size(1280, 1024)
self.driver.implicitly_wait(15)
'''
sendkeyRe = "send_keys\\(\"(.+?)\""
selectRe = "select_by_visible_text\\(\"(.+?)\""
assertEqualRe = "assertEqual\\(\"(.+?)\","
def bang():
args = sys.argv
if len(args) < 2:
print "wrong arguments"
print args
return
name = os.path.basename(args[1])
directory = os.path.dirname(args[1])
csvFile = ""
ProvideCsv = False
if len(args) == 3:
csvFile = args[2]
if csvFile != "":
if os.path.exists(csvFile) != True:
print "csv file don't exists"
return
else:
ProvideCsv = True
if csvFile == "":
csvFile = directory+"/"+name[0:len(name)-3]+".csv"
# print name
# print directory
with open("browserConfig", 'r') as f:
browsers = f.read()
if browsers != "":
onbrowsers = browsers
skip = 0
inTest = False
csvIndex = 0
row = []
with open(directory+"/B"+name, 'w') as newfile:
with open(args[1], 'r') as originalfile:
for line, val in enumerate(originalfile.readlines()):
if skip != 0:
skip = skip - 1
continue
if line == 0 and val != "#!/usr/bin/env python":
newfile.write('#!/usr/bin/env python\n')
newfile.write(val)
elif val.startswith("class"):
newfile.write(imports)
# newfile.write(onbrowsers)
# newfile.write(onplatforms)
newfile.write(val)
elif val.startswith(" def setUp("):
newfile.write(val)
newfile.write(setups)
skip = 2
elif val.startswith(" driver = self.driver"):
newfile.write(val)
newfile.write(" with open(\"" + csvFile + "\", 'r') as csvfile:\n")
newfile.write(" reader = csv.reader(csvfile)\n")
newfile.write(" for data in reader:\n")
inTest = True
elif val.startswith(" def is_element_present"):
inTest = False
newfile.write(val)
# elif val.startswith(" def tearDown(self)"):
# newfile.write(val)
# newfile.write(teardowns)
# skip = 2
elif inTest and val.find("send_keys(")>0:
# print re.search(sendkeyRe, val).group(1)
newfile.write(" ")
newfile.write(re.sub(sendkeyRe,"send_keys(data["+str(csvIndex)+"]",val))
row.append(re.search(sendkeyRe, val).group(1))
csvIndex += 1
elif inTest and val.find("select_by_visible_text(")>0:
# print re.search(selectRe, val).group(1)
newfile.write(" ")
newfile.write(re.sub(selectRe,"select_by_visible_text(data["+str(csvIndex)+"]",val))
row.append(re.search(selectRe, val).group(1))
csvIndex += 1
elif inTest and val.find("assertEqual(")>0:
# print re.search(assertEqualRe, val).group(1)
newfile.write(" ")
newfile.write(re.sub(assertEqualRe,"assertEqual(data["+str(csvIndex)+"],",val))
row.append(re.search(assertEqualRe, val).group(1))
csvIndex += 1
else:
if inTest :
newfile.write(" ")
newfile.write(val)
if not ProvideCsv:
with open(csvFile, 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(row)
os.chmod(directory+"/B"+name,stat.S_IRWXU)
print directory+"/B"+name
if __name__=='__main__':
bang()