2Modify TiledViz sessions with Selenium
9from selenium
import webdriver
10from selenium.common.exceptions
import NoSuchElementException
11from selenium.webdriver.common.keys
import Keys
12from selenium.webdriver.support.ui
import Select
13from selenium.webdriver.common.action_chains
import ActionChains
14from selenium.webdriver.support.events
import EventFiringWebDriver, AbstractEventListener
15from selenium.webdriver.firefox.firefox_binary
import FirefoxBinary
18PASSWORD_=
"OtherP@ssw/31d"
23 parser = argparse.ArgumentParser(
24 'From a (users,project,session) get tile_sets, tiles and connections tables and build a session json structure from TiledViz database.')
25 parser.add_argument(
'-l',
'--login', default=LOGIN_,
26 help=
'Login in TiledViz (default: '+LOGIN_+
')')
27 parser.add_argument(
'-p',
'--password', default=PASSWORD_,
28 help=
'User password (default: '+PASSWORD_+
')')
29 parser.add_argument(
'-s',
'--session', default=SESSION_,
30 help=
'TiledViz session (default: '+SESSION_+
')')
31 parser.add_argument(
'-o',
'--mysession', action=
'store_true',
32 help=
'Is it my own session.')
33 parser.add_argument(
'-i',
'--invitedsession', action=
'store_true',
34 help=
'I am working with one of my invited session.)')
35 parser.add_argument(
'-n',
'--nbtileset', default=NBTILESET_, type=int,
36 help=
'Number of tilesets to be modified (default: '+str(NBTILESET_)+
')')
37 parser.add_argument(
'tilesetmodifs', nargs=
"*",
39 List of modifications : for each tileset
41 path to nodes.js file (with filename)''')
43 args = parser.parse_args(argv[1:])
66URL =
'http://localhost:5000'
68 firefox_profile = webdriver.FirefoxProfile()
69 driver = webdriver.Firefox(firefox_profile=firefox_profile)
71 print(
"erreur ",e.msg)
73finddriver = EventFiringWebDriver(driver, MyListener())
75args = parse_args(sys.argv)
80assert "TiledViz" in driver.title
85LoginPage = finddriver.find_element_by_xpath(
"//button[@name='buttonLogin']")
87assert "Login TiledViz" in driver.title
89testform={
"username":args.login,
"password":args.password}
91 inputElement = finddriver.find_element_by_id(t)
93 inputElement.send_keys(testform[t])
95remember_me=finddriver.find_element_by_id(
"remember_me")
98choose_session=finddriver.find_element_by_xpath(
"//input[@id='choice_project-1']")
101el = finddriver.find_element_by_id(
"submit")
104assert "All projects/sessions TiledViz" in driver.title
106my_own_session=args.mysession
107if ( my_own_session ):
108 sessionfilter = finddriver.find_element_by_id(
"filter_chosen_project_session")
109 goButton = finddriver.find_element_by_id(
"Valid_chosen_project_session")
110 sessionfilter.click()
112 sessionfilter = finddriver.find_element_by_id(
"filter_chosen_session_invited")
113 goButton = finddriver.find_element_by_id(
"Valid_chosen_session_invited")
114 sessionfilter.click()
116sessionfilter.send_keys(args.session)
119edit_session = finddriver.find_element_by_xpath(
'//input[@value="Edit session before grid"]')
122assert "Edit session TiledViz" in driver.title
126for ts
in range(args.nbtileset):
128 idTileset=args.tilesetmodifs[2*ts]
129 print(
"Modifying Tileset "+idTileset)
131 choose_ts=finddriver.find_element_by_xpath(
"//label[contains(., '"+idTileset+
"')]/input")
136 edit_ts = finddriver.find_element_by_xpath(
"//form[@id='login-form']/input[@id='edit']")
139 elem=finddriver.find_element_by_xpath(
"//textarea[@id='json_tiles_text']")
147 jsfile=args.tilesetmodifs[2*ts+1]
150 except Exception
as e :
151 print(
"Can't open file "+jsfile)
154 driver.execute_script(
"var textnode = document.getElementById('json_tiles_text'); "+
155 "textnode.value = arguments[0];",
157 el = finddriver.find_element_by_id(
"submit")