/** * @covers Wa72\HtmlPageDom\HtmlPageCrawler::getInnerHtml * @covers Wa72\HtmlPageDom\HtmlPageCrawler::setInnerHtml * @covers Wa72\HtmlPageDom\HtmlPageCrawler::prepend * @covers Wa72\HtmlPageDom\HtmlPageCrawler::makeEmpty * @covers Wa72\HtmlPageDom\HtmlPageCrawler::setAttribute */ public function testManipulationFunctions() { $c = new HtmlPageCrawler(); $c->addHtmlContent('<html><body><div id="content"><h1>Title</h1></div></body></html>'); $content = $c->filter('#content'); $content->append('<p>Das ist ein Testabsatz'); $this->assertEquals('<h1>Title</h1><p>Das ist ein Testabsatz</p>', $content->getInnerHtml()); $content->setInnerHtml('<p>Ein neuer <b>Inhalt</p>'); $this->assertEquals('<p>Ein neuer <b>Inhalt</b></p>', $content->getInnerHtml()); $content->prepend('<h1>Neue Überschrift'); $this->assertEquals('<h1>Neue Überschrift</h1><p>Ein neuer <b>Inhalt</b></p>', $content->getInnerHtml()); $h1 = $content->filter('h1'); $this->assertEquals('Neue Überschrift', $h1->text()); $b = $content->filter('b'); $this->assertEquals('Inhalt', $b->text()); $b2 = $c->filter('#content p b'); $this->assertEquals('Inhalt', $b2->text()); $content->append('<p class="a2">Zweiter Absatz</p>'); $content->append('<p class="a3"><b>Dritter Absatz</b> und noch mehr Text</p>'); $a3 = $content->filter('p.a3'); $this->assertEquals('<b>Dritter Absatz</b> und noch mehr Text', $a3->getInnerHtml()); $a3b = $a3->filter('b'); $this->assertEquals('Dritter Absatz', $a3b->text()); $body = $c->filter('body'); $this->assertEquals('<div id="content"><h1>Neue Überschrift</h1><p>Ein neuer <b>Inhalt</b></p><p class="a2">Zweiter Absatz</p><p class="a3"><b>Dritter Absatz</b> und noch mehr Text</p></div>', $body->getInnerHtml()); $paragraphs = $c->filter('p'); $this->assertEquals(3, count($paragraphs)); $paragraphs->append('<span class="appended">.</span>'); $this->assertEquals('<p>Ein neuer <b>Inhalt</b><span class="appended">.</span></p><p class="a2">Zweiter Absatz<span class="appended">.</span></p><p class="a3"><b>Dritter Absatz</b> und noch mehr Text<span class="appended">.</span></p>', $c->filter('p')->saveHTML()); $body->makeEmpty(); $this->assertEmpty($body->getInnerHtml()); $body->setAttribute('class', 'mybodyclass'); $this->assertEquals('mybodyclass', $body->attr('class')); }