def _build_selector(cls, tree, selector_type): if selector_type == 'xpath': return XpathSelector(tree) elif selector_type == 'json': return JsonSelector(tree) else: raise GrabMisuseError('Unknown selector type: %s' % selector_type)
def test_select_node(self): self.assertEquals({ 'name': 'Mars', 'cities': [], 'population': 0 }, JsonSelector(self.tree).select('$[1]')[0].node.value)
def test_attr_list(self): root = JsonSelector(self.tree) self.assertRaises( NotImplementedError, lambda: root.select('$..population').attr_list('bar'))
def test_html(self): root = JsonSelector(self.tree) self.assertRaises(NotImplementedError, lambda: root.select('$..population')[0].html())
def test_text_list(self): root = JsonSelector(self.tree) self.assertEquals(['7000000000', '0'], root.select('$..population').text_list())
def test_select_select(self): root = JsonSelector(self.tree) self.assertEquals('Mars', root.select('$[1]').select('name').text())
def test_population(self): self.assertEquals( 7000000000, JsonSelector(self.tree).select('$..population').number())
def test_text(self): self.assertEquals('Mars', JsonSelector(self.tree).select('$[1].name').text())
def test_html(self): sel = JsonSelector(self.tree) self.assertRaises(NotImplementedError, sel.html)
def test_it_works(self): sel = JsonSelector(self.tree)
def test_attr_list(self): root = JsonSelector(self.tree) self.assertRaises(NotImplementedError, lambda: root.select('$..population').attr_list('bar'))