Source code for capybara.html

from cssselect import HTMLTranslator
from lxml import etree
import re

from capybara.utils import inner_content


[docs]class HTML(object): def __init__(self, source): if not source: source = "<html/>" parser = etree.HTMLParser(encoding="utf-8") tree = etree.HTML(source, parser=parser) for element in tree.xpath("//textarea"): content = inner_content(element) content = re.sub("\A\n", "", content) for child in element.getchildren(): element.remove(child) element.text = content self.tree = tree
[docs] def css(self, css): return etree.XPath(HTMLTranslator().css_to_xpath(css))(self.tree)
[docs] def xpath(self, xpath): return self.tree.xpath(xpath)