pandorafms/tests/console/include/common_functions_60.py

221 lines
8.2 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
from selenium import selenium
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support import expected_conditions as EC
2016-06-03 16:26:37 +02:00
import random
import string
def gen_random_string(size,preffix=None):
2016-06-03 16:46:16 +02:00
random_string = ''.join(random.SystemRandom().choice(string.ascii_uppercase+string.digits) for _ in range(size))
2016-06-03 16:26:37 +02:00
if preffix:
return preffix+random_string
else:
return random_string
def login(driver,user="admin",passwd="pandora",pandora_url="http://127.0.0.1/"):
driver.get(pandora_url+"/pandora_console/index.php")
driver.find_element_by_id("nick").clear()
driver.find_element_by_id("nick").send_keys(user)
driver.find_element_by_id("pass").clear()
driver.find_element_by_id("pass").send_keys(passwd)
driver.find_element_by_id("submit-login_button").click()
def get_menu_element(driver,menu_item_text):
return driver.find_element_by_xpath('//div[@class="menu"]//a[contains(.,"'+menu_item_text+'")]')
def click_menu_element(driver,menu_item_text):
return driver.execute_script("arguments[0].click();", get_menu_element(driver,menu_item_text))
2016-06-15 11:11:08 +02:00
def refresh_N_times_until_find_element(driver,n,element_text,how=By.ID,refresh_time=10):
from selenium.common.exceptions import TimeoutException
i = 1
while (1<=n):
try:
element = WebDriverWait(driver, refresh_time).until(EC.presence_of_element_located((how, element_text)))
return element
except:
driver.get(driver.current_url)
i = i+1
raise TimeoutException("Element %s not found" % (element_text))
def logout(driver,url):
2016-06-17 13:47:03 +02:00
if url[-1] != '/':
driver.find_element_by_xpath('//div[@id="container"]//a[@href="'+url+'/pandora_console/index.php?bye=bye"]').click()
else:
driver.find_element_by_xpath('//div[@id="container"]//a[@href="'+url+'pandora_console/index.php?bye=bye"]').click()
driver.get(url+"/pandora_console/index.php")
refresh_N_times_until_find_element(driver,2,"nick")
2016-06-13 17:26:11 +02:00
def create_report(driver,nombre,group_name):
click_menu_element(driver,"Custom reporting")
driver.find_element_by_id("submit-create").click()
driver.find_element_by_id("text-name").clear()
driver.find_element_by_id("text-name").send_keys(nombre)
if group_name == "All":
Select(driver.find_element_by_id("id_group")).select_by_visible_text(group_name)
else:
#TODO This will not work when choosing a group within a group within another group
Select(driver.find_element_by_id("id_group")).select_by_visible_text(" "+group_name)
driver.find_element_by_id("submit-add").click()
2016-06-20 16:35:15 +02:00
def delete_report(driver,report_name):
click_menu_element(driver,"Custom reporting")
driver.find_element_by_id('text-search').clear()
driver.find_element_by_id('text-search').send_keys(report_name)
driver.find_element_by_id('submit-search_submit').click()
driver.find_element_by_id('image-delete2').click()
alert = driver.switch_to_alert()
alert.accept()
def add_user_profile(driver,user_name,profile,group):
click_menu_element(driver,"Users management")
driver.find_element_by_css_selector("b").click()
driver.find_element_by_id("text-filter_search").clear()
driver.find_element_by_id("text-filter_search").send_keys(user_name)
driver.find_element_by_id("submit-search").click()
driver.find_element_by_xpath('//*[@id="table3-0-6"]/a[2]').click()
Select(driver.find_element_by_id("assign_profile")).select_by_visible_text(profile)
if group == "All":
Select(driver.find_element_by_id("assign_group")).select_by_visible_text(group)
else:
#TODO This will not work when choosing a group within a group within another group
Select(driver.find_element_by_id("assign_group")).select_by_visible_text(" "+group)
#driver.find_element_by_id("image-add2").click()
driver.find_element_by_xpath('//*[@name="add"]').click()
def create_user(driver,user_name,userpwd,email=None,profile_list=None):
u"""
Profile list es una LISTA de TUPLAS:
l = [("Chief Operator","All"),("Read Operator","Servers")]
"""
2016-06-13 17:26:11 +02:00
click_menu_element(driver,"Users management")
driver.find_element_by_id("submit-crt").click()
driver.find_element_by_name("id_user").clear()
driver.find_element_by_name("id_user").send_keys(user_name)
2016-06-13 17:26:11 +02:00
driver.find_element_by_name("password_new").clear()
driver.find_element_by_name("password_new").send_keys(userpwd)
driver.find_element_by_name("password_confirm").clear()
driver.find_element_by_name("password_confirm").send_keys(userpwd)
driver.find_element_by_name("email").clear()
if email != None:
driver.find_element_by_name("email").clear()
2016-06-13 17:26:11 +02:00
driver.find_element_by_name("email").send_keys(email)
driver.find_element_by_id("submit-crtbutton").click()
2016-06-13 17:26:11 +02:00
if profile_list != None:
for profile_name,group_name in profile_list:
add_user_profile(driver,user_name,profile_name,group_name)
2016-06-15 11:11:08 +02:00
2016-06-20 13:21:12 +02:00
def search_user(driver,user_name):
click_menu_element(driver,"Users management")
driver.find_element_by_css_selector("b").click()
driver.find_element_by_id('text-filter_search').clear()
driver.find_element_by_id("text-filter_search").send_keys(user_name)
driver.find_element_by_id("submit-search").click()
2016-06-15 11:11:08 +02:00
def is_element_present(driver, how, what):
from selenium.common.exceptions import NoSuchElementException
try:
driver.implicitly_wait(5)
driver.find_element(by=how, value=what)
except NoSuchElementException:
driver.implicitly_wait(5)
return False
driver.implicitly_wait(30)
2016-06-15 11:11:08 +02:00
return True
def detect_and_pass_pandorin(driver):
if is_element_present(driver,By.NAME,'clippy_is_annoying'):
driver.find_element_by_id('checkbox-clippy_is_annoying').click()
driver.find_element_by_class_name('introjs-skipbutton').click()
alert = driver.switch_to_alert()
alert.accept()
def detect_and_pass_initial_wizard(driver):
#We need to distinguish between the REQUIRED wizard
if is_element_present(driver,By.ID,'login_id_dialog'):
driver.find_element_by_id('text-email').clear()
driver.find_element_by_id('text-email').send_keys("test@pandora.com")
driver.find_element_by_id('submit-id_dialog_button').click()
def detect_and_pass_newsletter_wizard(driver):
if is_element_present(driver,By.ID,'login_accept_register'):
driver.find_element_by_id('submit-finish_dialog_button').click()
driver.find_element_by_id('submit-yes_registration').click()
def detect_and_pass_all_wizards(driver):
detect_and_pass_pandorin(driver)
detect_and_pass_initial_wizard(driver)
detect_and_pass_newsletter_wizard(driver)
2016-06-20 11:43:35 +02:00
def delete_agent (driver,agent_names_list):
click_menu_element(driver,"Agents operations")
driver.find_element_by_id("option").click()
2016-06-20 11:46:25 +02:00
Select(driver.find_element_by_id("option")).select_by_visible_text("Bulk agent delete")
2016-06-20 11:43:35 +02:00
2016-06-20 11:46:25 +02:00
for agent_name in agent_names_list:
Select(driver.find_element_by_id("id_agents")).select_by_visible_text(agent_name)
2016-06-20 11:43:35 +02:00
2016-06-20 11:46:25 +02:00
driver.find_element_by_id("submit-go").click()
2016-06-20 11:43:35 +02:00
2016-07-04 13:40:48 +02:00
def search_agent(driver,agent_name):
2016-06-20 11:43:35 +02:00
2016-07-04 13:40:48 +02:00
click_menu_element(driver,"Agent detail")
driver.find_element_by_id("text-search").click()
driver.find_element_by_id("text-search").clear()
driver.find_element_by_id("text-search").send_keys(agent_name)
driver.find_element_by_id("submit-srcbutton").click()
driver.find_element_by_css_selector("b").click()
2016-07-04 13:43:07 +02:00
2016-07-05 10:55:56 +02:00
def create_agent(driver,agent_name,ip=None,description=None,group=None,os_id=None):
2016-07-04 13:43:07 +02:00
click_menu_element(driver,"Agent detail")
driver.find_element_by_id("submit-crt").click()
driver.find_element_by_id("text-agente").send_keys(agent_name)
2016-07-05 10:55:56 +02:00
if ip != None:
driver.find_element_by_id("text-direccion").clear()
driver.find_element_by_id("text-direccion").send_keys(ip)
if description != None:
driver.find_element_by_id("text-comentarios").clear()
driver.find_element_by_id("text-comentarios").send_keys(description)
if group != None:
Select(driver.find_element_by_id("grupo")).select_by_visible_text(group)
if os_id !=None:
Select(driver.find_element_by_id("id_os")).select_by_visible_text(os_id)
2016-07-05 11:49:25 +02:00
driver.find_element_by_id("submit-crtbutton").click()
2016-07-06 11:16:42 +02:00
#Dashboard
def create_new_dashboard(driver,name,group):
click_menu_element(driver,"Main dashboard")
driver.find_element_by_xpath('//*[@id="menu_tab"]/ul/li[4]/a/img').click()
driver.find_element_by_xpath('//*[@id="table2-0-1"]/a[2]/img').click()
driver.find_element_by_id("text-name").send_keys(name)
Select(driver.find_element_by_id("group")).select_by_visible_text(group)
driver.find_element_by_id('submit-add-btn').click()