@@ -101,6 +101,34 @@ def test_simple_selection_with_variables_escape_friendly(self):
101101 lng = lt )],
102102 [u'a' ])
103103
104+ def test_accessing_attributes (self ):
105+ body = u"""
106+ <html lang="en" version="1.0">
107+ <body>
108+ <ul id="some-list" class="list-cls" class="list-cls">
109+ <li class="item-cls" id="list-item-1">
110+ <li class="item-cls active" id="list-item-2">
111+ <li class="item-cls" id="list-item-3">
112+ </ul>
113+ </body>
114+ </html>
115+ """
116+ sel = self .sscls (text = body )
117+ self .assertEquals ({'lang' : 'en' , 'version' : '1.0' }, sel .attrib )
118+ self .assertEquals ({'id' : 'some-list' , 'class' : 'list-cls' }, sel .css ('ul' )[0 ].attrib )
119+
120+ # for a SelectorList, bring the attributes of first-element only
121+ self .assertEquals ({'id' : 'some-list' , 'class' : 'list-cls' }, sel .css ('ul' ).attrib )
122+ self .assertEquals ({'class' : 'item-cls' , 'id' : 'list-item-1' }, sel .css ('li' ).attrib )
123+ self .assertEquals ({}, sel .css ('body' ).attrib )
124+ self .assertEquals ({}, sel .css ('non-existing-element' ).attrib )
125+
126+ self .assertEquals (
127+ [{'class' : 'item-cls' , 'id' : 'list-item-1' },
128+ {'class' : 'item-cls active' , 'id' : 'list-item-2' },
129+ {'class' : 'item-cls' , 'id' : 'list-item-3' }],
130+ [e .attrib for e in sel .css ('li' )])
131+
104132 def test_representation_slice (self ):
105133 body = u"<p><input name='{}' value='\xa9 '/></p>" .format (50 * 'b' )
106134 sel = self .sscls (text = body )
0 commit comments