diff --git a/SiteElement.xml b/SiteElement.xml
new file mode 100644
index 0000000..cb59c5f
--- /dev/null
+++ b/SiteElement.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+ Id
+ login_login_username
+
+
+
+
+ Id
+ login_login_password
+
+
+
+
+ Id
+ login_submit
+
+
+
+ LinkText
+ Logout
+
+
+ LinkText
+ Mahara
+
+
+
+
\ No newline at end of file
diff --git a/ePO_Login.py b/ePO_Login.py
new file mode 100644
index 0000000..19457c8
--- /dev/null
+++ b/ePO_Login.py
@@ -0,0 +1,99 @@
+import unittest
+import time
+import sys
+from selenium import webdriver
+from selenium.webdriver.common.keys import Keys
+from selenium.webdriver.support.ui import WebDriverWait
+from selenium.webdriver.common.by import By
+from selenium.webdriver.support import expected_conditions as EC
+
+
+class ePO_login(unittest.TestCase):
+
+ """
+ This sample exercise the explicit wait function
+ The ExpectedConditions are listed below:
+ prerequsite: my_email and password must be registered at manage.mcafee.com
+
+title_is
+title_contains
+presence_of_element_located
+visibility_of_element_located
+visibility_of
+presence_of_all_elements_located
+text_to_be_present_in_element
+text_to_be_present_in_element_value
+frame_to_be_available_and_switch_to_it
+invisibility_of_element_located
+element_to_be_clickable - it is Displayed and Enabled.
+staleness_of
+element_to_be_selected
+element_located_to_be_selected
+element_selection_state_to_be
+element_located_selection_state_to_be
+alert_is_present
+ """
+
+ def setUp(self):
+ self.driver = webdriver.Firefox()
+
+ def test_login(self):
+ driver = self.driver
+ driver.get("http://manage.mcafee.com")
+ assert "Log On" in driver.title
+ elem = driver.find_element_by_id('logOnEmailAddress')
+ elem.clear()
+ elem.send_keys('my@email.com')
+ elem = driver.find_element_by_id('logOnPassword')
+ elem.clear()
+ elem.send_keys('password')
+ elem = driver.find_element_by_id('logOnButton')
+ elem.click()
+ # time.sleep(10) # implicit wait
+ # explicit wait EC.presence_of_element
+ try:
+ element = WebDriverWait(driver, 20).until(
+ EC.presence_of_element_located((By.ID, "mfaTitle"))
+ )
+ except IOError as e:
+ print("I/O errors({0}): {1}".format(e.errorno, e.strerror))
+ except ValueError:
+ print("Value Error")
+ except:
+ print("Unexpected error (can't find the control)")
+ finally:
+ pass
+
+ elem = driver.find_element_by_xpath("//*[text()='Dashboards']")
+ elem.click()
+ # explicit wait EC.text_to_be_present
+ try:
+ element = WebDriverWait(driver, 10).until(
+ EC.text_to_be_present_in_element_value
+ ((By.ID, "mfaTitle"), 'Dashboards')
+ )
+ except IOError as e:
+ print("I/O errors({0}): {1}".format(e.errorno, e.strerror))
+ except ValueError:
+ print("Value Error")
+ except:
+ print("Unexpected error (can't find the control)")
+ finally:
+ pass
+
+ elem = driver.find_element_by_xpath("//*[text()='Getting Started']")
+ elem.click()
+ elem = driver.find_element_by_xpath("//*[text()='Systems']")
+ elem.click()
+ elem = driver.find_element_by_xpath("//*[text()='Queries & Reports']")
+ elem.click()
+
+ assert "ePolicy" in driver.title
+
+ def tearDown(self):
+ self.driver.close()
+
+if __name__ == "__main__":
+ unittest.main()
+
+__author__ = 'mpsauto'
diff --git a/selenium1.py b/selenium1.py
new file mode 100644
index 0000000..7dadca1
--- /dev/null
+++ b/selenium1.py
@@ -0,0 +1,55 @@
+import unittest
+from selenium import webdriver
+from selenium.webdriver.common.keys import Keys
+from selenium.webdriver.support.ui import WebDriverWait
+from selenium.webdriver.common.by import By
+from selenium.webdriver.support import expected_conditions as EC
+
+
+class PythonOrgSearch(unittest.TestCase):
+
+ '''
+ Learning point 1: Combination of Unittest framework with the selenium
+ Learning point 2: Web page navigation: driver.get(), forward(), back()
+ Learning point 3: Find element(s): id,name,xpath,class_name,link,tag,css
+ Learning point 3: Web interaction: click, send_keys,
+ Learning point 4: todo: select from drop-down options
+ Learning point 5: todo: drag-and-drop,
+ Learning point 6: todo: switch between windows and frames (iframe)
+ Learning point 7: todo: handling popup dialog
+ Learning point 8: todo: explicit wait (conditions) and implicit wait
+ Learning point 9: todo: execution sequence
+ Learning point10: todo: PageObjectModel (see python_org.py codes)
+ '''
+
+ def setUp(self):
+ self.driver = webdriver.Firefox()
+
+ def test_search_in_python_org(self):
+ driver = self.driver
+ driver.get("http://www.google.com")
+ assert "Google" in driver.title
+ elem = driver.find_element_by_name('q')
+ elem.clear()
+ elem.send_keys("pycon")
+ elem.send_keys(Keys.RETURN)
+ assert "No results found." not in driver.page_source
+
+ def test_explicit_wait(self):
+ driver = self.driver
+ driver.get("http://somedomain/url_that_delays_loading")
+ element = WebDriverWait(driver, 10).until(
+ EC.presence_of_element_located((By.ID, "myDynamicElement")))
+
+ def test_implicit_wait(self):
+ driver = self.driver
+ driver.implicitly_wait(10) # sec
+ driver.get("http://somedomain/url_that_delays_loading")
+ myDynamicElement = driver.find_element_by_id("myDynamicElement")
+
+ def tearDown(self):
+ self.driver.close()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/selenium2.py b/selenium2.py
new file mode 100644
index 0000000..d60388e
--- /dev/null
+++ b/selenium2.py
@@ -0,0 +1,59 @@
+import unittest
+import xml.etree.ElementTree as ET
+from selenium import webdriver
+from selenium.webdriver.common.keys import Keys
+
+tree = ET.parse('SiteElement.xml')
+root = tree.getroot()
+
+def getSearchValue(pagenameattribute, elementkeystring):
+ xpathstring = "./pages/page[@name='" + \
+ pagenameattribute+"']/element[@Key='" + \
+ elementkeystring+"']"
+ print(xpathstring)
+ for element in root.findall(xpathstring):
+ value = element.find('value').text
+ return value
+
+def getSearchBy(pagenameattribute, elementkeystring):
+ xpathstring = "./page/page[@name='" + \
+ pagenameattribute+"']/element[@Key='" + \
+ elementkeystring + "']"
+ print(xpathstring)
+ for element in root.findall('searchby').text:
+ searchby = element.find('searchby')
+ return searchby
+
+
+class DemoMaharaOrgLogin(unittest.TestCase):
+ '''
+ Learning Point: The page struc is described in SiteElement.xml
+ '''
+ def setUp(self):
+ self.driver = webdriver.Firefox()
+
+ def test_login_in_demo_mahara_org(self):
+ driver = self.driver
+ driver.get("http://demo.mahara.org/")
+ self.assertIn("Home - Mahara", driver.title)
+
+ username = driver.find_element_by_id(getSearchValue
+ ("LoginPage", "LoginUserName"))
+ username.send_keys(("student1"))
+
+ password = driver.find_element_by_id(
+ getSearchValue("LoginPage", "LoginPassword"))
+ password.send_keys("Testing1")
+
+ loginbutton = driver.find_element_by_id(getSearchValue
+ ("LoginPage", "SubmitButton"))
+ loginbutton.click()
+
+ self.assertTrue(driver.find_element_by_link_text(
+ getSearchValue("DashboardPage", "LogoutLink")), "Logout link")
+
+ def tearDown(self):
+ self.driver.close()
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/selenium3.py b/selenium3.py
new file mode 100644
index 0000000..97ffe5f
--- /dev/null
+++ b/selenium3.py
@@ -0,0 +1,36 @@
+from selenium import webdriver
+from page_objects import PageObject, PageElement
+
+
+class LoginPage(PageObject):
+ '''
+ Page Object Model sample code package (page_objects)
+ https://page-objects.readthedocs.io/en/latest/tutorial.html
+ https://media.readthedocs.org/pdf/page-objects/latest/page-objects.pdf
+
+
+
+ Login Page
+
+
+
+
+
+ '''
+ username = PageElement(id_='user-input')
+ password = PageElement(name='password')
+ login = PageElement(css='input[type="submit"]')
+ form = PageElement(tag_name='form')
+
+
+driver = webdriver.PhantomJS()
+driver.get("http://example.com")
+page = LoginPage(driver)
+page.username = 'secret'
+page.password = 'squirrel'
+assert page.username.text == 'secret'
+page.login.click()