Пример #1
0
    def test_handlers(self):
        "css_parser.log"
        s = self._setHandler()

        css_parser.log.setLevel(logging.FATAL)
        self.assertEqual(css_parser.log.getEffectiveLevel(), logging.FATAL)

        css_parser.parseString('a { color: 1 }')
        self.assertEqual(s.getvalue(), '')

        css_parser.log.setLevel(logging.DEBUG)
        css_parser.parseString('a { color: 1 }')
        self.assertEqual(
            s.getvalue(),
            'ERROR    Property: Invalid value for "CSS Level 2.1" property: 1 [1:5: color]\n'
        )

        s = self._setHandler()

        css_parser.log.setLevel(logging.WARNING)
        css_parser.parseUrl('http://example.com')
        q = s.getvalue()[:38]
        if q.startswith('WARNING    URLError'):
            pass
        else:
            self.assertEqual(q, 'ERROR    Expected "text/css" mime type')
Пример #2
0
    def test_parseUrl(self):
        "css_parser.parseUrl()"
        href = basetest.get_sheet_filename('import.css')
        # href = u'file:' + urllib.pathname2url(href)
        href = css_parser.helper.path2url(href)
        # href = 'http://seewhatever.de/sheets/import.css'
        s = css_parser.parseUrl(href, media='tv, print', title='from url')
        self.assertIsInstance(s, css_parser.css.CSSStyleSheet)
        self.assertEqual(href, s.href)
        self.assertEqual(self.exp.encode(), s.cssText)
        self.assertEqual('utf-8', s.encoding)
        self.assertEqual('tv, print', s.media.mediaText)
        self.assertEqual('from url', s.title)

        sr = s.cssRules[1]
        img = sr.style.getProperty('background-image').propertyValue[0].value
        self.assertEqual(img, 'images/example.gif')

        ir = s.cssRules[0]
        self.assertEqual('import/import2.css', ir.href)
        irs = ir.styleSheet
        self.assertEqual(
            irs.cssText,
            '@import "../import3.css";\n@import "import-impossible.css" print;\n.import2 {\n    /* sheets/import2.css */\n    background: url(http://example.com/images/example.gif);\n    background: url(//example.com/images/example.gif);\n    background: url(/images/example.gif);\n    background: url(images2/example.gif);\n    background: url(./images2/example.gif);\n    background: url(../images/example.gif);\n    background: url(./../images/example.gif)\n    }'  # noqa
            .encode())

        ir2 = irs.cssRules[0]
        self.assertEqual('../import3.css', ir2.href)
        irs2 = ir2.styleSheet
        self.assertEqual(
            irs2.cssText,
            '/* import3 */\n.import3 {\n    /* from ./import/../import3.css */\n    background: url(images/example3.gif);\n    background: url(./images/example3.gif);\n    background: url(import/images2/example2.gif);\n    background: url(./import/images2/example2.gif);\n    background: url(import/images2/../../images/example3.gif)\n    }'  # noqa
            .encode())
Пример #3
0
 def get_css(self):
     """获取css 并转换为mapping"""
     # 下载css
     sheet = css_parser.parseUrl(self.cssulr, validate=False, media=False)
     for rule in sheet.cssRules:
         if hasattr(rule, "selectorList"):
             for selector in rule.selectorList:
                 if self.reg.search(selector.selectorText):
                     sel = selector.selectorText.split('.')[1]
                     self.mapping[sel] = self.get_box(
                         rule.style["background-position"])