コード例 #1
0
ファイル: selector.py プロジェクト: danillab/selection
 def test_regexp(self):
     html = '<div><h1 id="h1">foo</h1><h2>bar</h2></div>'
     sel = XpathSelector(fromstring(html))
     self.assertEqual('h2', sel.select('//*[re:test(text(), "b.r")]')\
                               .node().tag)
     self.assertEqual('foo', sel.select('//*[re:test(@id, "^h\d+$")]'
                                        '/text()').text())
コード例 #2
0
 def test_regexp(self):
     html = '<div><h1 id="h1">foo</h1><h2>bar</h2></div>'
     sel = XpathSelector(fromstring(html))
     self.assertEqual('h2', sel.select('//*[re:test(text(), "b.r")]')\
                               .node().tag)
     self.assertEqual(
         'foo',
         sel.select('//*[re:test(@id, "^h\d+$")]'
                    '/text()').text())
コード例 #3
0
ファイル: selector.py プロジェクト: pombredanne/selection
    def test_incorrect_xpath(self):
        # The lxml xpath function return boolean for following xpath
        # This breaks selector internal logic that assumes that only
        # list could be returnsed
        # So it was fixed and this test was crated
        sel = XpathSelector(self.tree).select('//ul/li/text()="oops"')
        self.assertEquals(False, sel.exists())

        # Selector list is always empty in this special case
        # Even if the xpath return True on lxml level
        self.assertEquals(True, self.tree.xpath('//ul[1]/li[1]/text()="one"'))
        sel = XpathSelector(self.tree).select('//ul[1]/li[1]/text()="one"')
        self.assertEquals(False, sel.exists())
コード例 #4
0
    def test_incorrect_xpath(self):
        # The lxml xpath function return boolean for following xpath
        # This breaks selector internal logic that assumes that only
        # list could be returnsed
        # So it was fixed and this test was crated
        sel = XpathSelector(self.tree).select('//ul/li/text()="oops"')
        self.assertEquals(False, sel.exists())

        # Selector list is always empty in this special case
        # Even if the xpath return True on lxml level
        self.assertEquals(True, self.tree.xpath('//ul[1]/li[1]/text()="one"'))
        sel = XpathSelector(self.tree).select('//ul[1]/li[1]/text()="one"')
        self.assertEquals(False, sel.exists())
コード例 #5
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_text(self):
     sel = XpathSelector(self.tree).select("//ul/li")
     self.assertEquals("one", sel.text())
コード例 #6
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_rex_method(self):
     sel = XpathSelector(self.tree)
     self.assertTrue(isinstance(sel.select("//li").rex("\w*"), RexResultList))
コード例 #7
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_text_selector_html(self):
     sel = XpathSelector(self.tree).select("//li/text()").one()
     self.assertEquals(u"one", sel.html())
コード例 #8
0
 def test_node_default(self):
     sel = XpathSelector(self.tree).select('//ul/li[10]')
     self.assertRaises(DataNotFound, lambda: sel.node())
     self.assertEqual('DEFAULT', sel.node(default='DEFAULT'))
コード例 #9
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_attr_does_not_exist(self):
     root = XpathSelector(self.tree)
     self.assertRaises(DataNotFound, lambda: root.select("//ul[1]").attr("id-xxx"))
コード例 #10
0
 def test_xpath_concat_function(self):
     html = '<a href="index.html"></a>'
     sel = XpathSelector(fromstring(html))
     self.assertEqual('/index.html', sel.select('concat("/",//a/@href)')\
                               .text())
コード例 #11
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_rex_default(self):
     sel = XpathSelector(self.tree).select("//ul/li[10]")
     self.assertRaises(DataNotFound, lambda: sel.rex("zz"))
     self.assertEquals("DEFAULT", sel.rex("zz", default="DEFAULT"))
コード例 #12
0
 def test_number_default(self):
     sel = XpathSelector(self.tree).select('//ul/li[10]')
     self.assertRaises(DataNotFound, sel.number)
     self.assertEquals('DEFAULT', sel.number(default='DEFAULT'))
コード例 #13
0
    def test_exists(self):
        sel = XpathSelector(self.tree).select('//ul/li[4]')
        self.assertEquals(True, sel.exists())

        sel = XpathSelector(self.tree).select('//ul/li[5]')
        self.assertEquals(False, sel.exists())
コード例 #14
0
 def test_inner_html_default(self):
     sel = XpathSelector(self.tree).select('//ul/li[10]')
     self.assertRaises(DataNotFound, sel.inner_html)
     self.assertEquals('DEFAULT', sel.inner_html(default='DEFAULT'))
コード例 #15
0
 def test_number(self):
     sel = XpathSelector(self.tree).select('//ul/li[4]')
     self.assertEquals(4, sel.number())
コード例 #16
0
 def test_inner_html(self):
     sel = XpathSelector(self.tree).select('//ul[@id="second-list"]')
     self.assertEquals(
         u'<li class="li-1">yet one</li>\n            <li class="li-2">yet two</li>',
         sel.inner_html().strip())
コード例 #17
0
 def test_html(self):
     sel = XpathSelector(self.tree).select('//ul/li')
     self.assertEquals(u'<li>one</li>', sel.html().strip())
コード例 #18
0
 def test_text(self):
     sel = XpathSelector(self.tree).select('//ul/li')
     self.assertEquals('one', sel.text())
コード例 #19
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_number(self):
     sel = XpathSelector(self.tree).select("//ul/li[4]")
     self.assertEquals(4, sel.number())
コード例 #20
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_text_no_default(self):
     sel = XpathSelector(self.tree).select("//ul/li/text()")
     self.assertRaises(DataNotFound, lambda: sel.rex("(zz)").text())
コード例 #21
0
ファイル: selector.py プロジェクト: pombredanne/selection
    def test_assert_exists(self):
        sel = XpathSelector(self.tree).select("//ul/li")
        sel.assert_exists()

        sel = XpathSelector(self.tree).select("//ul/li[10]")
        self.assertRaises(DataNotFound, sel.assert_exists)
コード例 #22
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_html(self):
     sel = XpathSelector(self.tree.xpath("//h1")[0])
     self.assertEquals("<h1>test</h1>", sel.html().strip())
コード例 #23
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_attr_default(self):
     sel = XpathSelector(self.tree).select("//ul[2]/li[10]")
     self.assertRaises(DataNotFound, lambda: sel.attr("class"))
     self.assertEquals("DEFAULT", sel.attr("class", default="DEFAULT"))
コード例 #24
0
 def test_context_manager_select_text(self):
     html = '<b>one</b><b>two</b>'
     with XpathSelector(fromstring(html)).select('b') as elem:
         self.assertEqual('one', elem.text())
コード例 #25
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_one(self):
     sel = XpathSelector(self.tree).select("//ul/li")
     self.assertEquals("SRE_Match", sel.rex("one").one().__class__.__name__)
コード例 #26
0
 def test_context_manager_select_iter(self):
     html = '<b>one</b><b>two</b>'
     with XpathSelector(fromstring(html)).select('b') as qs:
         vals = [x.text() for x in qs]
         self.assertEqual(set(['one', 'two']), set(vals))
コード例 #27
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_number(self):
     sel = XpathSelector(self.tree).select("//ul/li[4]/text()")
     self.assertEquals(4, sel.rex("(\d+)").number())
コード例 #28
0
 def test_attr(self):
     sel = XpathSelector(self.tree).select('//ul[2]/li')
     self.assertEquals('li-1', sel.attr('class'))
コード例 #29
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_selector_number_does_not_exist(self):
     sel = XpathSelector(self.tree).select("//ul/li[1]").one()
     self.assertEquals("DEFAULT", sel.number(default="DEFAULT"))
     self.assertRaises(DataNotFound, lambda: sel.number())
コード例 #30
0
 def test_attr_default(self):
     sel = XpathSelector(self.tree).select('//ul[2]/li[10]')
     self.assertRaises(DataNotFound, lambda: sel.attr('class'))
     self.assertEquals('DEFAULT', sel.attr('class', default='DEFAULT'))
コード例 #31
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_attr_with_default_value(self):
     root = XpathSelector(self.tree)
     self.assertEqual("z", root.select("//ul[2]").attr("id-xxx", default="z"))
コード例 #32
0
 def test_rex(self):
     sel = XpathSelector(self.tree).select('//ul/li')
     self.assertTrue(isinstance(sel.rex('(\w+)'), RexResultList))
コード例 #33
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_attr_list(self):
     root = XpathSelector(self.tree)
     self.assertEquals(set(["li-1", "li-2"]), set(root.select('//ul[@id="second-list"]/li').attr_list("class")))
コード例 #34
0
 def test_rex_default(self):
     sel = XpathSelector(self.tree).select('//ul/li[10]')
     self.assertRaises(DataNotFound, lambda: sel.rex('zz'))
     self.assertEquals('DEFAULT', sel.rex('zz', default='DEFAULT'))
コード例 #35
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_text_selector_select(self):
     sel = XpathSelector(self.tree).select("//li/text()").one()
     self.assertRaises(SelectionRuntimeError, lambda: sel.select("foo"))
コード例 #36
0
 def test_node_list(self):
     sel = XpathSelector(self.tree).select('//ul/li')
     self.assertEquals(self.tree.xpath('//ul/li'), sel.node_list())
コード例 #37
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_node_default(self):
     sel = XpathSelector(self.tree).select("//ul/li[10]")
     self.assertRaises(DataNotFound, lambda: sel.node())
     self.assertEqual("DEFAULT", sel.node(default="DEFAULT"))
コード例 #38
0
    def test_require(self):
        XpathSelector(self.tree).select('//ul').require()

        self.assertRaises(RequiredDataNotFound,
                          XpathSelector(self.tree).select('//foo').require)
コード例 #39
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_html(self):
     sel = XpathSelector(self.tree).select("//ul/li")
     self.assertEquals(u"<li>one</li>", sel.html().strip())
コード例 #40
0
 def test_one(self):
     sel = XpathSelector(self.tree).select('//ul/li')
     self.assertEquals('SRE_Match', sel.rex('one').one().__class__.__name__)
コード例 #41
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_number_default(self):
     sel = XpathSelector(self.tree).select("//ul/li[10]")
     self.assertRaises(DataNotFound, sel.number)
     self.assertEquals("DEFAULT", sel.number(default="DEFAULT"))
コード例 #42
0
 def test_text(self):
     sel = XpathSelector(self.tree).select('//ul/li/text()')
     self.assertEquals('one', sel.rex('(\w+)').text())
コード例 #43
0
ファイル: selector.py プロジェクト: pombredanne/selection
    def test_exists(self):
        sel = XpathSelector(self.tree).select("//ul/li[4]")
        self.assertEquals(True, sel.exists())

        sel = XpathSelector(self.tree).select("//ul/li[5]")
        self.assertEquals(False, sel.exists())
コード例 #44
0
 def test_text_no_default(self):
     sel = XpathSelector(self.tree).select('//ul/li/text()')
     self.assertRaises(DataNotFound, lambda: sel.rex('(zz)').text())
コード例 #45
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_attr(self):
     sel = XpathSelector(self.tree).select("//ul[2]/li")
     self.assertEquals("li-1", sel.attr("class"))
コード例 #46
0
 def test_text_default_value(self):
     sel = XpathSelector(self.tree).select('//ul/li/text()')
     self.assertEquals('DEFAULT', sel.rex('(zz)').text(default='DEFAULT'))
コード例 #47
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_rex(self):
     sel = XpathSelector(self.tree).select("//ul/li")
     self.assertTrue(isinstance(sel.rex("(\w+)"), RexResultList))
コード例 #48
0
 def test_number(self):
     sel = XpathSelector(self.tree).select('//ul/li[4]/text()')
     self.assertEquals(4, sel.rex('(\d+)').number())
コード例 #49
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_node_list(self):
     sel = XpathSelector(self.tree).select("//ul/li")
     self.assertEquals(self.tree.xpath("//ul/li"), sel.node_list())
コード例 #50
0
 def test_in_general(self):
     XpathSelector(self.tree)
コード例 #51
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_text(self):
     sel = XpathSelector(self.tree).select("//ul/li/text()")
     self.assertEquals("one", sel.rex("(\w+)").text())
コード例 #52
0
 def test_select_node(self):
     sel = XpathSelector(self.tree)
     self.assertEquals('test', sel.select('//h1')[0]._node.text)
コード例 #53
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_text_default_value(self):
     sel = XpathSelector(self.tree).select("//ul/li/text()")
     self.assertEquals("DEFAULT", sel.rex("(zz)").text(default="DEFAULT"))
コード例 #54
0
 def test_html(self):
     sel = XpathSelector(self.tree.xpath('//h1')[0])
     self.assertEquals('<h1>test</h1>', sel.html().strip())
コード例 #55
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_select_node(self):
     sel = XpathSelector(self.tree)
     self.assertEquals("test", sel.select("//h1")[0]._node.text)
コード例 #56
0
 def test_selector_number(self):
     sel = XpathSelector(self.tree)
     self.assertEquals(4, sel.select('//ul/li[last()]').one().number())
     self.assertEquals(6, sel.select('//ul/li[last()]/@id').one().number())
コード例 #57
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_selector_number(self):
     sel = XpathSelector(self.tree)
     self.assertEquals(4, sel.select("//ul/li[last()]").one().number())
     self.assertEquals(6, sel.select("//ul/li[last()]/@id").one().number())
コード例 #58
0
 def test_selector_number_does_not_exist(self):
     sel = XpathSelector(self.tree).select('//ul/li[1]').one()
     self.assertEquals('DEFAULT', sel.number(default='DEFAULT'))
     self.assertRaises(DataNotFound, lambda: sel.number())
コード例 #59
0
ファイル: selector.py プロジェクト: pombredanne/selection
 def test_text_selector(self):
     sel = XpathSelector(self.tree).select("//li/text()").one()
     self.assertTrue(sel.is_text_node())
     self.assertEquals("one", XpathSelector(self.tree).select("//li/text()").text())
コード例 #60
0
 def test_text_selector(self):
     sel = XpathSelector(self.tree).select('//li/text()').one()
     self.assertTrue(sel.is_text_node())
     self.assertEquals(
         'one',
         XpathSelector(self.tree).select('//li/text()').text())