コード例 #1
0
    def test_device_location(self):
        driver = SeleniumDriver(self.driver)
        locationInput = "//*[@id='deviceSettings']/p[5]/input"

        self.restore_device_settings()
        time.sleep(3)
        self.open_device_settings()

        locationDefault = driver.get_element_attribute(locationInput, XPATH,
                                                       VALUE)

        time.sleep(3)
        driver.send_input(locationInput, XPATH, "The UUT is at this location.")

        driver.wait_and_click(save_btn(), XPATH)
        driver.wait_and_click(close_btn_msg(), XPATH)

        time.sleep(3)
        self.open_device_settings()

        driver.get_element(locationInput, XPATH)
        changedLocation = driver.get_element_attribute(locationInput, XPATH,
                                                       VALUE)

        assert locationDefault != changedLocation
コード例 #2
0
    def test_seq_power_up(self):
        driver = SeleniumDriver(self.driver)
        sequenceState = "sequenceState"

        self.restore_device_settings()
        time.sleep(3)
        self.open_device_settings()

        sequenceStateDefault = driver.get_element_attribute(
            sequenceState, ID, ClASS)

        time.sleep(3)
        driver.wait_and_click(sequenceState, ID)

        driver.wait_and_click(save_btn(), XPATH)
        driver.wait_and_click(close_btn_msg(), XPATH)

        time.sleep(3)
        self.open_device_settings()

        driver.get_element(sequenceState, ID)
        changedSequenceState = driver.get_element_attribute(
            sequenceState, ID, ClASS)

        assert sequenceStateDefault != changedSequenceState
コード例 #3
0
    def test_account_name_number(self):
        driver = SeleniumDriver(self.driver)
        accountNameNum = "//*[@id='deviceSettings']/p[3]/input"

        self.restore_device_settings()
        time.sleep(3)
        self.open_device_settings()

        acctNameNumDefault = driver.get_element_attribute(
            accountNameNum, XPATH, VALUE)

        time.sleep(3)
        driver.send_input(accountNameNum, XPATH, "1234567890")

        driver.wait_and_click(save_btn(), XPATH)
        driver.wait_and_click(close_btn_msg(), XPATH)

        time.sleep(3)
        self.open_device_settings()

        driver.get_element(accountNameNum, XPATH)
        changedAcctNameNum = driver.get_element_attribute(
            accountNameNum, XPATH, VALUE)

        assert acctNameNumDefault != changedAcctNameNum
コード例 #4
0
    def test_device_name(self):
        driver = SeleniumDriver(self.driver)
        deviceName = "//*[@id='deviceSettings']/p[2]/input"

        self.restore_device_settings()
        time.sleep(3)
        self.open_device_settings()

        deviceNameDefault = driver.get_element_attribute(
            deviceName, XPATH, VALUE)

        time.sleep(3)
        driver.send_input(deviceName, XPATH, "Unit Under Test.")

        driver.wait_and_click(save_btn(), XPATH)
        driver.wait_and_click(close_btn_msg(), XPATH)

        time.sleep(3)
        self.open_device_settings()

        driver.get_element(deviceName, XPATH)
        changedDeviceName = driver.get_element_attribute(
            deviceName, XPATH, VALUE)

        assert deviceNameDefault != changedDeviceName
コード例 #5
0
    def test_ip_host_name(self):
        driver = SeleniumDriver(self.driver)
        emailIpHost = "//*[@id='emailSettings']/div[1]/p[1]/input"
        inputBox = "//*[@id='emailSettings']/div[1]/p[1]/input"
        invalidIpHostNames = [
            '0.8.8.8', '8.8.8.0', '255.8.8.8', '20.255.90', '8.8.8',
            '8.8.8.8.8', 'exchange.map'
        ]

        self.open_email_settings()
        time.sleep(3)
        self.default_ip_email_rep()
        time.sleep(3)

        for name in invalidIpHostNames:
            driver.wait_until_clickable(emailIpHost, XPATH)
            driver.send_input(emailIpHost, XPATH, name)
            driver.wait_and_click(save_btn(), XPATH)

            ipHostVal = driver.get_element_attribute(emailIpHost, XPATH, VALUE)
            ipNodes = ip_nodes(ipHostVal)
            hostNodes = host_nodes(ipHostVal)

            assert self.is_hidden_string(notify_msg()) == False

            driver.element_click("btnOk", ID)

            assert self.has_error(inputBox) == True

            ipInputClass = driver.get_element_attribute(
                emailIpHost, XPATH, ClASS)

            expectedOpGood = True

            if name.startswith("0"):
                assert starts_with_zero(ipHostVal,
                                        ipInputClass) == expectedOpGood
            elif name.endswith("0"):
                assert ends_with_zero(ipHostVal,
                                      ipInputClass) == expectedOpGood
            elif "255" in name:
                assert node_255(ipHostVal, ipInputClass) == expectedOpGood
            elif len(ipNodes) < 4:
                assert short_ip_node_length(ipHostVal,
                                            ipInputClass) == expectedOpGood
            elif len(hostNodes) < 3:
                assert short_host_node_length(ipHostVal,
                                              ipInputClass) == expectedOpGood
            else:
                assert long_ip_node_length(ipHostVal,
                                           ipInputClass) == expectedOpGood

        driver.wait_and_click(cancel_btn(), XPATH)

        time.sleep(3)
        self.restore_email_settings()
コード例 #6
0
    def test_edit_cancel_btn(self):
        """
        Verification of Outlet Edit mode and Cancel Button Functionality
        verify that the outlet has the “guitarSolo” class
        verify that the outlet no longer has the “guitarSolo” class

        """
        driver = SeleniumDriver(self.driver)
        outletBoxList = self.driver.find_elements_by_xpath(outlet_box_xpath())
        outletEditMode = "//div[8]"

        index = 2
        for outletBox in outletBoxList:
            expectedOpGood = True
            time.sleep(5)
            outletBox.click()

            outletElemClass = driver.get_element_attribute(outletEditMode, XPATH, ClASS)

            if 'guitarSolo' in outletElemClass:
                assert expectedOpGood == True

            driver.wait_and_click(outlet_cancel_btn(), XPATH)

            time.sleep(1)
            assert driver.is_element_present(outletEditMode, XPATH) == False

            index += 1
コード例 #7
0
    def test_outlet_cycle(self):
        """
        Verify that the cycle input is between 1 - 999
        Verify “Are you sure…” message appears
        Verify success message appears
        Verify that the outlet face has changed color
        Verify that the outlet shrinks out of edit mode

        """

        driver = SeleniumDriver(self.driver)
        outletBoxList = self.driver.find_elements_by_xpath(outlet_box_xpath())
        cycleNum = 10  # cycle number in seconds
        cycleInput = '//div[8]/div[2]/form[1]/p[2]/input'
        startCycleBtn = "//div[8]/div[2]/form[1]/p[2]/button"
        outletEditMode = "//div[8]"

        index = 2
        for outletBox in outletBoxList:
            outletCtrlStr = "//*[@id='outletControl']/div[{0}]/div[1]".format(
                index)
            time.sleep(5)

            outletBox.click()
            driver.wait_until_clickable(cycleInput, XPATH)
            driver.send_input(cycleInput, XPATH, cycleNum)

            # Verify that the cycle input is between 1 - 999
            cycleInputVal = driver.get_element_attribute(
                cycleInput, XPATH, VALUE)
            assert 1 <= int(cycleInputVal) <= 999

            driver.element_click(startCycleBtn, XPATH)

            # Verify “Are you sure…” message appears
            driver.wait_for_visibility(notify_msg(), XPATH)
            assert self.is_hidden_string(notify_msg()) == False

            driver.element_click("btnOk", ID)

            # Verify success message appears
            time.sleep(1)
            if driver.is_element_present(success_msg(), XPATH):
                assert self.is_hidden_string(success_msg()) == False

            # Verify that the outlet face has changed color to red
            time.sleep(5)
            driver.get_element(outletCtrlStr, XPATH)
            assert self.is_on(outletCtrlStr) == False

            # Verify that the outlet face has changed color to green
            time.sleep(cycleNum)
            driver.get_element(outletCtrlStr, XPATH)
            assert self.is_on(outletCtrlStr) == True

            # Verify that the outlet shrinks out of edit 0mode
            assert driver.is_element_present(outletEditMode, XPATH) == False

            index += 1
    def test_seq_down(self):
        """ Tests sequence down
            Asserts a valid delay input
        """

        driver = SeleniumDriver(self.driver)
        outletBoxList = self.driver.find_elements_by_xpath(outlet_box_xpath())
        outletsWithStateOff = self.driver.find_elements_by_class_name("state-off")

        downBtn = ".//*[@id='sequenceControl']/div[2]/div/button[2]"
        initiateBtn = ".//*[@id='seqDelayCtrl']/div/button[2]"
        delayInput = ".//*[@id='seqDelayCtrl']/span/input"
        inputNum = 3

        numOfOutletBox = len(outletBoxList)
        numOutletsStateOff = len(outletsWithStateOff)

        self.restore_seq_defaults()

        time.sleep(4)
        if numOutletsStateOff == numOfOutletBox:
            self.turn_outlets_on()

        index = numOfOutletBox
        for outlet in outletBoxList[::-1]:
            outletCtrlStr = ".//*[@id='outletControl']/div[{0}]/div[1]".format(index)

            if self.is_on(outletCtrlStr) is False:
                index -= 1
            else:
                driver.wait_and_click(downBtn, XPATH)
                driver.send_input(delayInput, XPATH, inputNum)

                delayInputVal = driver.get_element_attribute(delayInput, XPATH, VALUE)
                assert 255 >= int(delayInputVal) >= 1

                driver.wait_and_click(initiateBtn, XPATH)
                break
        time.sleep(inputNum * numOfOutletBox)

        outletsWithStateOff = self.driver.find_elements_by_class_name("state-off")
        numOutletsStateOff = len(outletsWithStateOff)
        assert numOutletsStateOff == numOfOutletBox

        self.turn_outlets_on()
コード例 #9
0
    def test_outlet_name_length(self):
        """
        function to test outlets' name
        outlet name can only accept up to 50 characters (letters, digits, and special characters)

        """

        driver = SeleniumDriver(self.driver)
        outletBoxList = self.driver.find_elements_by_xpath(outlet_box_xpath())
        outletNameElement = '//div[8]/div[2]/input'

        # Random characters with a length of 50 to test outlet's name
        randomChars = 'g#QUfjeTakWbxHCS*6RQ579Wq6sBV3AT?#T!DrZ6#yJpbZzC$@'

        i = 2
        for outletBox in outletBoxList:
            outletCtrlStr = ".//*[@id='outletControl']/div[{0}]/div[1]".format(
                i)
            time.sleep(5)
            driver.wait_and_click(outletCtrlStr, XPATH)
            driver.wait_for_visibility(outletNameElement, XPATH)
            driver.send_input(outletNameElement, XPATH, randomChars)

            driver.wait_and_click(outlet_save_btn(), XPATH)

            time.sleep(2)
            if driver.is_element_present(close_btn_msg(), XPATH):
                assert self.is_hidden_string(success_msg()) == False
                driver.wait_and_click(close_btn_msg(), XPATH)

            time.sleep(5)
            driver.wait_and_click(outletCtrlStr, XPATH)
            inputValue = driver.get_element_attribute(outletNameElement, XPATH,
                                                      VALUE)

            #  assert input
            assert 50 >= len(inputValue) >= 1

            driver.wait_and_click(outlet_cancel_btn(), XPATH)

            i += 1

        time.sleep(3)
        self.restore_outlet_defaults()
    def test_seq_up(self):
        """ Tests sequence up
            Asserts a valid delay input
        """

        driver = SeleniumDriver(self.driver)
        outletBoxList = self.driver.find_elements_by_xpath(outlet_box_xpath())
        upBtn = ".//*[@id='sequenceControl']/div[2]/div/button[1]"
        initiateBtn = ".//*[@id='seqDelayCtrl']/div/button[2]"
        delayInput = ".//*[@id='seqDelayCtrl']/span/input"
        inputNum = 3

        numOfOutletBox = len(outletBoxList)

        outletsWithStateOn = self.driver.find_elements_by_class_name("state-on")
        numOutletsStateOn = len(outletsWithStateOn)

        if numOutletsStateOn == numOfOutletBox:
            self.turn_outlets_off()

        index = 2
        for outlet in outletBoxList:
            if index > numOfOutletBox: break

            outletCtrlStr = ".//*[@id='outletControl']/div[{0}]/div[1]".format(index)

            if self.is_on(outletCtrlStr):
                index += 1
            else:
                driver.wait_and_click(upBtn, XPATH)
                driver.send_input(delayInput, XPATH, inputNum)

                delayInputVal = driver.get_element_attribute(delayInput, XPATH, VALUE)
                assert 255 >= int(delayInputVal) >= 1

                driver.wait_and_click(initiateBtn, XPATH)
                break

        time.sleep(inputNum * numOfOutletBox)

        outletsWithStateOn = self.driver.find_elements_by_class_name("state-on")
        numOutletsStateOn = len(outletsWithStateOn)
        assert numOutletsStateOn == numOfOutletBox
コード例 #11
0
    def test_outlet_name_not_changed(self):
        """
        Click on the outlet
        verify that the name has not changed after clicking the cancel btn.

        """

        driver = SeleniumDriver(self.driver)
        outletBoxList = self.driver.find_elements_by_xpath(outlet_box_xpath())
        outletNameElement = '//div[8]/div[2]/input'

        randomInput = "Outlet Name"

        index = 2
        for outletBox in outletBoxList:
            outletBoxStr = ".//*[@id='outletControl']/div[{0}]".format(index)
            time.sleep(5)
            outletBox.click()
            driver.wait_until_clickable(outletNameElement, XPATH)
            driver.send_input(outletNameElement, XPATH, randomInput)

            driver.wait_and_click(outlet_cancel_btn(), XPATH)

            time.sleep(3)
            driver.wait_and_click(outletBoxStr, XPATH)

            driver.wait_until_clickable(outletNameElement, XPATH)
            driver.get_element(outletNameElement, XPATH)

            inputVal = driver.get_element_attribute(outletNameElement, XPATH,
                                                    VALUE)

            assert inputVal != randomInput

            driver.wait_and_click(outlet_cancel_btn(), XPATH)
            index += 1
コード例 #12
0
    def test_power_cycle_until_recovery(self):

        driver = SeleniumDriver(self.driver)
        outletBoxList = self.driver.find_elements_by_xpath(outlet_box_xpath())
        powerCycUntilRec = "//div[8]/div[2]/form[2]/select/option[contains(@value, '6')]"
        ipAddressInputElem = '//div[8]/div[2]/form[2]/p[1]/input'
        freqInputElem = "//div[8]/div[2]/form[2]/p[2]/input"
        retriesInputElem = "//div[8]/div[2]/form[2]/p[3]/input"
        selectOptions = "//div[8]/div[2]/form[2]/select"
        cycleDelayElem = "//div[8]/div[2]/form[2]/p[6]/input"
        frequency = 30
        retries = 2
        cycleDelay = 3
        waitTime = (frequency * retries) * 2

        index = 2
        for outletBox in outletBoxList:
            outletCtrlStr = ".//*[@id='outletControl']/div[{0}]/div[1]".format(
                index)
            outletOn = "//*[@id='outletControl']/div[{0}]/div[contains(@class, 'state-on')]".format(
                index)
            autoPingTitle = "//*[@id='outletControl']/div[{0}]/h6".format(
                index)

            time.sleep(5)
            driver.wait_and_click(outletCtrlStr, XPATH)

            self.ctrl_device_power()  # turn outlet off in the control device

            ipAddresses = get_ip_addresses()
            ipAddressToPing = ipAddresses[2]  # ip address to ping

            if self.is_on(outletFace) is False:
                driver.element_click(stateBtn, XPATH)
                driver.element_click("btnOk", ID)
                driver.wait_and_click(close_btn_msg(), XPATH)
                time.sleep(5)
                driver.get_element(outletCtrlStr, XPATH)
                driver.wait_and_click(outletCtrlStr, XPATH)

            if not self.is_on(enableBtn):
                driver.wait_and_click(enableBtn, XPATH)

            # input for ip address to ping, frequency, and retries
            driver.send_input(ipAddressInputElem, XPATH, ipAddressToPing)
            driver.send_input(freqInputElem, XPATH, frequency)
            driver.send_input(retriesInputElem, XPATH, retries)

            time.sleep(3)
            driver.wait_and_click(selectOptions, XPATH)

            if driver.is_element_selected(powerCycUntilRec, XPATH):
                driver.wait_and_click(outlet_save_btn(), XPATH)
            else:
                driver.wait_and_click(powerCycUntilRec, XPATH)
                self.driver.find_element_by_xpath(powerCycUntilRec).send_keys(
                    Keys.ENTER)
                driver.wait_until_clickable(cycleDelayElem, XPATH)
                driver.send_input(cycleDelayElem, XPATH, cycleDelay)
                driver.wait_and_click(outlet_save_btn(), XPATH)

            # in case the notification message pops up
            notifyDisplayed = self.driver.find_element_by_xpath(
                notify_msg()).is_displayed()
            if notifyDisplayed:
                driver.element_click("btnOk", ID)

            # verify if "AutoPing Failed" is in the autoPing title
            driver.wait_text_to_be_present_in_elem(autoPingTitle, XPATH,
                                                   'AutoPing Failed', waitTime)
            autoPingTitleClass = driver.get_element_attribute(
                autoPingTitle, XPATH, "title")
            assert autoPingTitleClass == "AutoPing Failed"

            self.ctrl_device_power(
            )  # turn outlet back on in the control device

            # verify that the outlet in the UUT is on, wait cycle delay
            # then verify that the outlet turned off
            driver.wait_for_visibility(outletOn, XPATH)
            assert self.is_on(outletCtrlStr) == True
            time.sleep(cycleDelay + 1)
            assert self.is_on(outletCtrlStr) == False

            # gets class again and verify if "AutoPing Replied" is in the autoPing title
            driver.wait_text_to_be_present_in_elem(autoPingTitle, XPATH,
                                                   'AutoPing Replied',
                                                   waitTime)
            autoPingTitleClass = driver.get_element_attribute(
                autoPingTitle, XPATH, "title")
            assert autoPingTitleClass == "AutoPing Replied"

            # open outlet in UUT, turn it back on, change ip address to default, & save changes
            time.sleep(3)
            self.change_ip_address_to_default(outletCtrlStr,
                                              ipAddressInputElem)

            index += 1
コード例 #13
0
    def test_ip_address_ping(self):
        """
            Asserts that the ip address input value is valid
            test_operation.py contains all the functionality for each test
            Tests:
                '8.8.8.8' -> Valid IP address that works
                '0.8.8.8' -> Cannot start with 0
                '8.8.8.0' -> Cannot end with 0
                '255.8.8.8' -> Each node must be less than 255 and greater than 0
                '.8.8.8' -> A node cannot be empty
                '8.8.8' -> There must be exactly 4 nodes separated by dots (periods)
        """

        driver = SeleniumDriver(self.driver)
        outletBoxList = self.driver.find_elements_by_xpath(outlet_box_xpath())
        enabledBtn = '//div[8]/div[2]/form[1]/button[2]'
        ipAddressInputElem = '//div[8]/div[2]/form[2]/p[1]/input'
        invalid_ips = [
            '0.8.8.8', '8.8.8.0', '255.8.8.8', '20.255.90', '8.8.8',
            '8.8.8.8.8'
        ]

        for outletBox in outletBoxList:
            time.sleep(5)
            outletBox.click()

            if self.is_on(enabledBtn) is False:
                driver.wait_and_click(enabledBtn, XPATH)

            driver.wait_until_clickable(enabledBtn, XPATH)
            driver.get_element(enabledBtn, XPATH)

            if self.is_on(enabledBtn):
                for ip in invalid_ips:
                    driver.wait_until_clickable(ipAddressInputElem, XPATH)
                    driver.send_input(ipAddressInputElem, XPATH, ip)

                    driver.wait_and_click(outlet_save_btn(), XPATH)

                    ipNumVal = driver.get_element_attribute(
                        ipAddressInputElem, XPATH, VALUE)
                    nodes = ip_nodes(ipNumVal)

                    if self.is_hidden_string(notify_msg()) is False:
                        expectedOpGood = True

                        driver.element_click("btnOk", ID)
                        ipInputClass = driver.get_element_attribute(
                            ipAddressInputElem, XPATH, ClASS)

                        if ip.startswith("0"):
                            assert starts_with_zero(
                                ipNumVal, ipInputClass) == expectedOpGood
                        elif ip.endswith("0"):
                            assert ends_with_zero(
                                ipNumVal, ipInputClass) == expectedOpGood
                        elif "255" in ip:
                            assert node_255(ipNumVal,
                                            ipInputClass) == expectedOpGood
                        elif len(nodes) < 4:
                            assert short_ip_node_length(
                                ipNumVal, ipInputClass) == expectedOpGood
                        else:
                            assert long_ip_node_length(
                                ipNumVal, ipInputClass) == expectedOpGood

                        time.sleep(1)

                driver.send_input(ipAddressInputElem, XPATH, "8.8.8.8")
                driver.wait_and_click(outlet_save_btn(), XPATH)
                driver.wait_and_click(close_btn_msg(), XPATH)