Esempio n. 1
0
    def test_createElementFromHtml(self):
        
        divEm = AdvancedHTMLParser.createElementFromHTML('<div class="hello world" id="xdiv"> <span id="subSpan1"> Sub element </span> <span id="subSpan2"> Sub element2 </span> </div>')

        assert isinstance(divEm, AdvancedTag) , 'Expected createElementFromHtml to return an AdvancedTag element'
        assert divEm.tagName == 'div', 'Expected tagName to be set from parsed html'

        assert len(divEm.children) == 2 , 'Expected two children on div'

        assert divEm.getAttribute('id') == 'xdiv' , 'Expected id attribute to be set'
        assert divEm.className == 'hello world' , 'Expected className attribute to be set'

        assert divEm.children[0].id == 'subSpan1' , 'Expected child to be parsed and have id set'

        assert divEm.children[0].innerHTML.strip() == 'Sub element' , 'Expected text to be parsed'

        assert divEm.documentElement is None , 'Expected documentElement to not be set on standalone element'
        assert divEm.children[1].documentElement is None , 'Expected documentElement to not be set on standalone element, in sub.'

        gotException = False

        try:
            divEm = AdvancedHTMLParser.createElementFromHTML('<div id="oneDiv"> <span> Sub</span> </div><div id="twoDiv"></div>')
        except MultipleRootNodeException:
            gotException = True

        assert gotException is True , 'Expected to get MultipleRootNodeException when trying to pass several top-level elements to createElementFromHTML'

        divEm.appendInnerHTML('Hello World <div id="addedSubDiv">Yay</div>')

        print ( "Inner is:\n\n%s\n" %(divEm.innerHTML,))

        assert divEm.getElementById('addedSubDiv') , 'Expected to add a child element'
        assert 'Hello World' in divEm.innerHTML , 'Expected text to be added to innerHTML'
    def test_createElementFromHtml(self):

        divEm = AdvancedHTMLParser.createElementFromHTML('<div class="hello world" id="xdiv"> <span id="subSpan1"> Sub element </span> <span id="subSpan2"> Sub element2 </span> </div>')

        assert isinstance(divEm, AdvancedTag) , 'Expected createElementFromHtml to return an AdvancedTag element'
        assert divEm.tagName == 'div', 'Expected tagName to be set from parsed html'

        assert len(divEm.children) == 2 , 'Expected two children on div'

        assert divEm.getAttribute('id') == 'xdiv' , 'Expected id attribute to be set'
        assert divEm.className == 'hello world' , 'Expected className attribute to be set'

        assert divEm.children[0].id == 'subSpan1' , 'Expected child to be parsed and have id set'

        assert divEm.children[0].innerHTML.strip() == 'Sub element' , 'Expected text to be parsed'

        assert divEm.documentElement is None , 'Expected documentElement to not be set on standalone element'
        assert divEm.children[1].documentElement is None , 'Expected documentElement to not be set on standalone element, in sub.'

        gotException = False

        try:
            divEm = AdvancedHTMLParser.createElementFromHTML('<div id="oneDiv"> <span> Sub</span> </div><div id="twoDiv"></div>')
        except MultipleRootNodeException:
            gotException = True

        assert gotException is True , 'Expected to get MultipleRootNodeException when trying to pass several top-level elements to createElementFromHTML'

        divEm.appendInnerHTML('Hello World <div id="addedSubDiv">Yay</div>')

        print ( "Inner is:\n\n%s\n" %(divEm.innerHTML,))

        assert divEm.getElementById('addedSubDiv') , 'Expected to add a child element'
        assert 'Hello World' in divEm.innerHTML , 'Expected text to be added to innerHTML'