public function testToArray()
 {
     $root = new HtmlNode(new Tag('root'));
     $parent = new HtmlNode(new Tag('div'));
     $child1 = new HtmlNode(new Tag('a'));
     $child2 = new HtmlNode(new Tag('p'));
     $child3 = new HtmlNode(new Tag('a'));
     $root->addChild($parent);
     $parent->addChild($child1);
     $parent->addChild($child2);
     $child2->addChild($child3);
     $selector = new Selector('a');
     $collection = $selector->find($root);
     $array = $collection->toArray();
     $lastA = end($array);
     $this->assertEquals($child3->id(), $lastA->id());
 }
示例#2
0
 public function testFindChildUsingChildSelector()
 {
     $root = new HtmlNode(new Tag('root'));
     $parent = new HtmlNode(new Tag('div'));
     $child1 = new HtmlNode(new Tag('ul'));
     $child2 = new HtmlNode(new Tag('span'));
     $child3 = new HtmlNode(new Tag('ul'));
     $root->addChild($parent);
     $parent->addChild($child1);
     $child2->addChild($child3);
     $parent->addChild($child2);
     $selector = new Selector('div > ul');
     $this->assertEquals(1, count($selector->find($root)));
 }
 public function testTextLookInChildrenAndNoChildren()
 {
     $p = new HtmlNode('p');
     $a = new HtmlNode('a');
     $a->addChild(new TextNode('click me'));
     $p->addChild(new TextNode('Please '));
     $p->addChild($a);
     $p->addChild(new TextNode('!'));
     $p->text;
     $p->text(true);
     $this->assertEquals('Please click me!', $p->text(true));
 }
 public function testFindXpathKeySelector()
 {
     $parent = new HtmlNode(new Tag('div'));
     $child1 = new HtmlNode(new Tag('a'));
     $child2 = new HtmlNode(new Tag('p'));
     $child3 = new HtmlNode(new Tag('a'));
     $child3->getTag()->setAttributes(['class' => ['value' => 'link outer', 'doubleQuote' => false]]);
     $parent->addChild($child1);
     $parent->addChild($child2);
     $parent->addChild($child3);
     $selector = new Selector('div[1]');
     $this->assertEquals($parent->id(), $selector->find($parent)[0]->id());
 }
示例#5
0
 public function testIterator()
 {
     $div = new Tag('div');
     $div->setAttributes(['class' => ['value' => 'all', 'doubleQuote' => true]]);
     $a = new Tag('a');
     $a->setAttributes(['href' => ['value' => 'http://google.com', 'doubleQuote' => false]]);
     $br = new Tag('br');
     $br->selfClosing();
     $parent = new HtmlNode($div);
     $childa = new HtmlNode($a);
     $childbr = new HtmlNode($br);
     $parent->addChild($childa);
     $parent->addChild($childbr);
     $childa->addChild(new TextNode('link'));
     $children = 0;
     foreach ($parent as $child) {
         ++$children;
     }
     $this->assertEquals(2, $children);
 }