aboutsummaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/tests_functional/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/tests_functional/base.py')
-rw-r--r--bitbake/lib/toaster/tests_functional/base.py103
1 files changed, 98 insertions, 5 deletions
diff --git a/bitbake/lib/toaster/tests_functional/base.py b/bitbake/lib/toaster/tests_functional/base.py
index a72c298d153..5e74a82437b 100644
--- a/bitbake/lib/toaster/tests_functional/base.py
+++ b/bitbake/lib/toaster/tests_functional/base.py
@@ -4,11 +4,16 @@ import logging
import unittest
import time
import platform
-import shutil, argparse, ConfigParser, json
+import shutil, argparse, configparser, json
+import errno
+import re
+from selenium import webdriver
+from selenium.webdriver.support.ui import Select
+from time import strftime, gmtime
+from selenium.common.exceptions import NoSuchElementException
-from time import strftime, gmtime
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),
'../', 'tests', 'browser')) # XXX: Test tool should insert the path
@@ -38,9 +43,40 @@ class ToasterFunctionalTests(SeleniumTestCaseBase):
@classmethod
def setUpClass(cls):
+ SeleniumTestCaseBase.setUpClass()
cls.log = cls.logger_create()
+ def mkdir_p(self, dir):
+ try:
+ os.makedirs(dir)
+ except OSError as exc:
+ if exc.errno == errno.EEXIST and os.path.isdir(dir):
+ pass
+ else:
+ raise
+
+
+
+ def setup_browser(self, *browser_path):
+ self.browser = eval(self.parser.get('toaster_test_' + self.target_suite, 'test_browser'))
+ print(self.browser)
+ if self.browser == "firefox":
+ driver = webdriver.Firefox()
+ elif self.browser == "chrome":
+ driver = webdriver.Chrome()
+ elif self.browser == "ie":
+ driver = webdriver.Ie()
+ else:
+ driver = None
+ print("unrecognized browser type, please check")
+ self.driver = driver
+ self.driver.implicitly_wait(30)
+ return self.driver
+
+
+
def setUp(self):
+
self.screenshot_sequence = 1
self.verificationErrors = []
self.accept_next_alert = True
@@ -50,7 +86,7 @@ class ToasterFunctionalTests(SeleniumTestCaseBase):
else:
self.target_suite = self.host_os
- self.parser = ConfigParser.SafeConfigParser()
+ self.parser = configparser.ConfigParser()
self.parser.read('toaster_test.cfg')
self.base_url = eval(self.parser.get('toaster_test_' + self.target_suite, 'toaster_url'))
@@ -58,12 +94,12 @@ class ToasterFunctionalTests(SeleniumTestCaseBase):
# test cases are done, move them to log/$datetime dir
self.log_tmp_dir = os.path.abspath(sys.path[0]) + os.sep + 'log' + os.sep + 'tmp'
try:
- mkdir_p(self.log_tmp_dir)
+ self.mkdir_p(self.log_tmp_dir)
except OSError :
logging.error("%(asctime)s Cannot create tmp dir under log, please check your privilege")
# self.log = self.logger_create()
# driver setup
- self.setup_browser()
+ #self.setup_browser()
@@ -103,3 +139,60 @@ class ToasterFunctionalTests(SeleniumTestCaseBase):
log.addHandler(ch)
return log
+
+
+
+
+ def get_table_element(self, table_id, *coordinate):
+ if len(coordinate) == 0:
+ #return whole-table element
+ element_xpath = "//*[@id='" + table_id + "']"
+ try:
+ element = self.driver.find_element_by_xpath(element_xpath)
+ except NoSuchElementException as e:
+ raise
+ return element
+ row = coordinate[0]
+
+ if len(coordinate) == 1:
+ #return whole-row element
+ element_xpath = "//*[@id='" + table_id + "']/tbody/tr[" + str(row) + "]"
+ try:
+ element = self.driver.find_element_by_xpath(element_xpath)
+ except NoSuchElementException as e:
+ return False
+ return element
+ #now we are looking for an element with specified X and Y
+ column = coordinate[1]
+
+ element_xpath = "//*[@id='" + table_id + "']/tbody/tr[" + str(row) + "]/td[" + str(column) + "]"
+ try:
+ element = self.driver.find_element_by_xpath(element_xpath)
+ except NoSuchElementException as e:
+ return False
+ return element
+
+
+
+
+
+ def find_element_by_link_text_in_table(self, table_id, link_text):
+ """
+ Assume there're multiple suitable "find_element_by_link_text".
+ In this circumstance we need to specify "table".
+ """
+ try:
+ table_element = self.get_table_element(table_id)
+ element = table_element.find_element_by_link_text(link_text)
+ except NoSuchElementException as e:
+ print('no element found')
+ raise
+ return element
+
+ def get_URL(self):
+ rc=self.get_page_source()
+ project_url=re.search("(projectPageUrl\s:\s\")(.*)(\",)",rc)
+ return project_url.group(2)
+
+
+