2022-07-07 21:40:37 +02:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
|
|
import time
|
2022-07-11 16:39:46 +02:00
|
|
|
import argparse
|
|
|
|
|
import code
|
|
|
|
|
import readline
|
2022-07-07 21:40:37 +02:00
|
|
|
|
|
|
|
|
from helium import *
|
|
|
|
|
import selenium
|
|
|
|
|
|
|
|
|
|
from selenium.webdriver.common.keys import Keys
|
|
|
|
|
from selenium.webdriver.common.by import By
|
|
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
parser = argparse.ArgumentParser()
|
|
|
|
|
parser.add_argument("--repl", action="store_true")
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
2022-07-07 21:40:37 +02:00
|
|
|
opts = selenium.webdriver.firefox.options.Options()
|
|
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
for has_javascript in [True, False]:
|
|
|
|
|
profile = selenium.webdriver.FirefoxProfile()
|
|
|
|
|
profile.DEFAULT_PREFERENCES["frozen"]["javascript.enabled"] = has_javascript
|
|
|
|
|
opts.profile = profile
|
|
|
|
|
|
|
|
|
|
driver = selenium.webdriver.Remote(
|
|
|
|
|
command_executor="http://localhost:4444/wd/hub", options=opts
|
|
|
|
|
)
|
|
|
|
|
driver.implicitly_wait(0)
|
|
|
|
|
Config.implicit_wait_secs = 1
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
helium.set_driver(driver)
|
|
|
|
|
helium.go_to("http://localhost:5000")
|
|
|
|
|
|
|
|
|
|
assert driver.title == "Packager"
|
|
|
|
|
|
|
|
|
|
new_entry = Text("Add new package list")
|
|
|
|
|
|
|
|
|
|
lists_before = find_all(S("table > tbody > tr", below=Text("Package Lists")))
|
|
|
|
|
|
|
|
|
|
write("newlist", into=TextField(to_right_of="Name"))
|
|
|
|
|
write("newlistdesc", into=TextField(to_right_of="Description"))
|
|
|
|
|
click(Button("Add"))
|
|
|
|
|
|
|
|
|
|
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
|
|
|
|
|
|
|
|
|
|
assert len(lists_before) == len(lists_after) - 1
|
|
|
|
|
|
|
|
|
|
nameidx = next(
|
|
|
|
|
i
|
|
|
|
|
for i, v in enumerate(find_all(S("table > thead > tr > th")))
|
|
|
|
|
if v.web_element.text == "Name"
|
|
|
|
|
)
|
|
|
|
|
descidx = next(
|
|
|
|
|
i
|
|
|
|
|
for i, v in enumerate(find_all(S("table > thead > tr > th")))
|
|
|
|
|
if v.web_element.text == "Description"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
write("newlist2", into=TextField(to_right_of="Name"))
|
|
|
|
|
write("newlistdesc2", into=TextField(to_right_of="Description"))
|
|
|
|
|
click(Button("Add"))
|
|
|
|
|
|
|
|
|
|
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
|
|
|
|
|
assert len(lists_before) == len(lists_after) - 2
|
|
|
|
|
|
|
|
|
|
new_entry1 = lists_after[-2]
|
|
|
|
|
cells = new_entry1.web_element.find_elements_by_tag_name("td")
|
|
|
|
|
assert cells[nameidx].text == "newlist"
|
|
|
|
|
assert cells[descidx].text == "newlistdesc"
|
|
|
|
|
|
|
|
|
|
new_entry2 = lists_after[-1]
|
|
|
|
|
cells = new_entry2.web_element.find_elements_by_tag_name("td")
|
|
|
|
|
assert cells[nameidx].text == "newlist2"
|
|
|
|
|
assert cells[descidx].text == "newlistdesc2"
|
|
|
|
|
|
|
|
|
|
editbtn = new_entry1.web_element.find_element_by_class_name("mdi-pencil")
|
|
|
|
|
click(editbtn)
|
|
|
|
|
|
|
|
|
|
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
|
|
|
|
|
editrow = find_all(S("table > tbody > tr"))[-2]
|
|
|
|
|
|
|
|
|
|
inputs = editrow.web_element.find_elements_by_xpath("//input")
|
|
|
|
|
write("editedname", into=inputs[0])
|
|
|
|
|
write("editeddesc", into=inputs[1])
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
savebtn = editrow.web_element.find_element_by_class_name("mdi-content-save")
|
|
|
|
|
click(savebtn)
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
|
|
|
|
|
new_entry1 = lists_after[-2]
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
cells = new_entry1.web_element.find_elements_by_tag_name("td")
|
|
|
|
|
assert cells[nameidx].text == "editedname"
|
|
|
|
|
assert cells[descidx].text == "editeddesc"
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
editbtn = new_entry1.web_element.find_element_by_class_name("mdi-pencil")
|
|
|
|
|
click(editbtn)
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
|
|
|
|
|
editrow = find_all(S("table > tbody > tr"))[-2]
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
inputs = editrow.web_element.find_elements_by_xpath("//input")
|
|
|
|
|
write("editedname_again", into=inputs[0])
|
|
|
|
|
write("editeddesc_again", into=inputs[1])
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
cancelbtn = editrow.web_element.find_element_by_class_name("mdi-cancel")
|
|
|
|
|
click(cancelbtn)
|
|
|
|
|
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
|
|
|
|
|
new_entry1 = lists_after[-2]
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
cells = new_entry1.web_element.find_elements_by_tag_name("td")
|
|
|
|
|
assert cells[nameidx].text == "editedname"
|
|
|
|
|
assert cells[descidx].text == "editeddesc"
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
new_entry1 = lists_after[-2]
|
|
|
|
|
deletebtn = new_entry1.web_element.find_element_by_class_name("mdi-delete")
|
|
|
|
|
click(deletebtn)
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
assert len(lists_before) + 1 == len(lists_after)
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
new_entry2 = lists_after[-1]
|
|
|
|
|
deletebtn = new_entry2.web_element.find_element_by_class_name("mdi-delete")
|
|
|
|
|
click(deletebtn)
|
|
|
|
|
lists_after = find_all(S("table > tbody > tr", below=Text("Package Lists")))
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
assert len(lists_before) == len(lists_after)
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
if args.repl:
|
|
|
|
|
code.InteractiveConsole(locals=globals()).interact()
|
2022-07-07 21:40:37 +02:00
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
finally:
|
|
|
|
|
driver.quit()
|
2022-07-07 21:40:37 +02:00
|
|
|
|
|
|
|
|
|
2022-07-11 16:39:46 +02:00
|
|
|
time.sleep(5)
|