NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: HTMLUnit - Pořád stejné xml

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Josef Kuchař - Pepa489:18.3.2016 22:47

Ahoj, mám takový nevysvětlitelný problém, přes htmlunit vybírám elementy, ve foreach položka lunch vrací správné xml, ale když potom v to lunch hledám xpathem tak to pořád hází stejné xml. Nevidí tam někdo chybu

Program:

webClient.waitForBackgroundJavaScript(1000);
        DomElement wrap = page.getElementById("seznam_objednavek_obalka");
        Iterable<DomElement> lunches = wrap.getChildElements();
        for(DomElement lunch : lunches)
        {
            DomElement dateElement = (DomElement) lunch.getByXPath("//*[contains(@class, 'objednavka-den-obalka')]").get(0);
            String date = dateElement.getAttribute("title");
            System.out.println("***********************************");
            System.out.println(lunch.asXml());
            System.out.println("-----------------------------------");
            System.out.println(date);
            System.out.println("-----------------------------------");
            System.out.println(dateElement.asXml());
        }
        System.out.println(wrap.getChildElementCount());

Výstup:

***********************************
<div class="objednavka-obalka objednavka-obalka-jednotne">
  <div class="objednavka-den-obalka" title="Pátek 18. 3.">
    <div class="objednavka-den-datum">

            Pátek 18. 3.

    </div>
  </div>
  <div class="objednavka-jidla-obalka">
    <div class="objednavka-jidlo-obalka objednavka-jidlo-polevka objednavka-jidlo-sude" title="">
      <input type="hidden" class="objednavka-jidlo-chod" value=""/>
      <div class="objednavka-jidlo-zmena schovane">
        <div id="" class="zaskrtavaciPolicko zaskrtavaciPolicko-povolene zaskrtavaciPolicko-kontrolovane" title="Tuto objednávku již nelze změnit" tabindex="">
          <div style="width: 16px; height: 17px; background: url(/Strava/Obsah/obrazky/zaskrtavaciPolicko_cervena.png) 0px 0px no-repeat;">
          </div>
          <input type="hidden" value="nezaskrtnuto" autocomplete="off"/>
          <span>
          </span>
        </div>
      </div>
      <div class="objednavka-jidlo-nazev">
        Polévka rybí námořnická
      </div>
      <div class="objednavka-jidlo-info">
        <img src="/Strava/Obsah/mobil/obrazky//info.png"/>
      </div>
      <div class="objednavka-jidlo-detaily">
        Popis:
        <br/>
        Polévka
      </div>
    </div>
    <div class="objednavka-jidlo-obalka objednavka-jidlo-liche" title="Konec objednávání: Čtvrtek 17.3. 13:00, Cena: 20,00 Kč">
      <input type="hidden" class="objednavka-jidlo-chod" value="3"/>
      <div class="objednavka-jidlo-zmena">
        <div id="" class="zaskrtavaciPolicko zaskrtavaciPolicko-povolene zaskrtavaciPolicko-kontrolovane" title="Tuto objednávku již nelze změnit" tabindex="">
          <div style="width: 16px; height: 17px; background: url(/Strava/Obsah/obrazky/zaskrtavaciPolicko_cervena.png) 0px 0px no-repeat;">
          </div>
          <input type="hidden" value="nezaskrtnuto" autocomplete="off"/>
          <span>
          </span>
        </div>
      </div>
      <div class="objednavka-jidlo-nazev">
        Špagety s kuřecím masem a rajčaty
      </div>
      <div class="objednavka-jidlo-info">
        <img src="/Strava/Obsah/mobil/obrazky//info.png"/>
      </div>
      <div class="objednavka-jidlo-detaily">
        Konec objednávání: Čtvrtek 17.3. 13:00
Cena: 20,00 Kč
Popis:
        <br/>
        Oběd 1
      </div>
    </div>
    <div class="objednavka-jidlo-obalka objednavka-jidlo-sude objednavka-jidlo-objednane" title="Konec objednávání: Čtvrtek 17.3. 13:00, Cena: 20,00 Kč">
      <input type="hidden" class="objednavka-jidlo-chod" value="3"/>
      <div class="objednavka-jidlo-zmena">
        <div id="" class="zaskrtavaciPolicko zaskrtavaciPolicko-povolene zaskrtavaciPolicko-kontrolovane" title="Tuto objednávku již nelze změnit" tabindex="">
          <div style="width: 16px; height: 17px; background: url(/Strava/Obsah/obrazky/zaskrtavaciPolicko_cervena.png) -16px 0px no-repeat;">
          </div>
          <input type="hidden" value="zaskrtnuto" autocomplete="off"/>
          <span>
          </span>
        </div>
      </div>
      <div class="objednavka-jidlo-nazev">
        Vepřový závitek s cibulí, Brambory
      </div>
      <div class="objednavka-jidlo-info">
        <img src="/Strava/Obsah/mobil/obrazky//info.png"/>
      </div>
      <div class="objednavka-jidlo-detaily">
        Konec objednávání: Čtvrtek 17.3. 13:00
Cena: 20,00 Kč
Popis:
        <br/>
        Oběd 2
      </div>
    </div>
    <div class="objednavka-jidlo-obalka objednavka-jidlo-polevka objednavka-jidlo-liche" title="">
      <input type="hidden" class="objednavka-jidlo-chod" value=""/>
      <div class="objednavka-jidlo-zmena schovane">
        <div id="" class="zaskrtavaciPolicko zaskrtavaciPolicko-povolene zaskrtavaciPolicko-kontrolovane" title="Tuto objednávku již nelze změnit" tabindex="">
          <div style="width: 16px; height: 17px; background: url(/Strava/Obsah/obrazky/zaskrtavaciPolicko_cervena.png) 0px 0px no-repeat;">
          </div>
          <input type="hidden" value="nezaskrtnuto" autocomplete="off"/>
          <span>
          </span>
        </div>
      </div>
      <div class="objednavka-jidlo-nazev">
        Moučník s kokosem, Kefír, Čaj s citrónem, Voda s citrónem, Jablko
      </div>
      <div class="objednavka-jidlo-info">
        <img src="/Strava/Obsah/mobil/obrazky//info.png"/>
      </div>
      <div class="objednavka-jidlo-detaily">
        Popis:
        <br/>
        Doplněk
      </div>
    </div>
  </div>
</div>

-----------------------------------
Pátek 18. 3.
-----------------------------------
<div class="objednavka-den-obalka" title="Pátek 18. 3.">
  <div class="objednavka-den-datum">

            Pátek 18. 3.

  </div>
</div>

***********************************
<div class="objednavka-obalka objednavka-obalka-jednotne">
  <div class="objednavka-den-obalka" title="Pondělí 21. 3.">
    <div class="objednavka-den-datum">

            Pondělí 21. 3.

    </div>
  </div>
  <div class="objednavka-jidla-obalka">
    <div class="objednavka-jidlo-obalka objednavka-jidlo-polevka objednavka-jidlo-sude" title="">
      <input type="hidden" class="objednavka-jidlo-chod" value=""/>
      <div class="objednavka-jidlo-zmena schovane">
        <div id="" class="zaskrtavaciPolicko zaskrtavaciPolicko-povolene zaskrtavaciPolicko-kontrolovane" title="Tuto objednávku již nelze změnit" tabindex="">
          <div style="width: 16px; height: 17px; background: url(/Strava/Obsah/obrazky/zaskrtavaciPolicko_cervena.png) 0px 0px no-repeat;">
          </div>
          <input type="hidden" value="nezaskrtnuto" autocomplete="off"/>
          <span>
          </span>
        </div>
      </div>
      <div class="objednavka-jidlo-nazev">
        Polévka falešná dršťková
      </div>
      <div class="objednavka-jidlo-info">
        <img src="/Strava/Obsah/mobil/obrazky//info.png"/>
      </div>
      <div class="objednavka-jidlo-detaily">
        Popis:
        <br/>
        Polévka
      </div>
    </div>
    <div class="objednavka-jidlo-obalka objednavka-jidlo-liche" title="Konec objednávání: Pátek 18.3. 13:00, Cena: 20,00 Kč">
      <input type="hidden" class="objednavka-jidlo-chod" value="3"/>
      <div class="objednavka-jidlo-zmena">
        <div id="" class="zaskrtavaciPolicko zaskrtavaciPolicko-povolene zaskrtavaciPolicko-kontrolovane" title="Tuto objednávku již nelze změnit" tabindex="">
          <div style="width: 16px; height: 17px; background: url(/Strava/Obsah/obrazky/zaskrtavaciPolicko_cervena.png) 0px 0px no-repeat;">
          </div>
          <input type="hidden" value="nezaskrtnuto" autocomplete="off"/>
          <span>
          </span>
        </div>
      </div>
      <div class="objednavka-jidlo-nazev">
        Vepřová pečeně, Mrkev dušená, Brambory
      </div>
      <div class="objednavka-jidlo-info">
        <img src="/Strava/Obsah/mobil/obrazky//info.png"/>
      </div>
      <div class="objednavka-jidlo-detaily">
        Konec objednávání: Pátek 18.3. 13:00
Cena: 20,00 Kč
Popis:
        <br/>
        Oběd 1
      </div>
    </div>
    <div class="objednavka-jidlo-obalka objednavka-jidlo-sude objednavka-jidlo-objednane" title="Konec objednávání: Pátek 18.3. 13:00, Cena: 20,00 Kč">
      <input type="hidden" class="objednavka-jidlo-chod" value="3"/>
      <div class="objednavka-jidlo-zmena">
        <div id="" class="zaskrtavaciPolicko zaskrtavaciPolicko-povolene zaskrtavaciPolicko-kontrolovane" title="Tuto objednávku již nelze změnit" tabindex="">
          <div style="width: 16px; height: 17px; background: url(/Strava/Obsah/obrazky/zaskrtavaciPolicko_cervena.png) -16px 0px no-repeat;">
          </div>
          <input type="hidden" value="zaskrtnuto" autocomplete="off"/>
          <span>
          </span>
        </div>
      </div>
      <div class="objednavka-jidlo-nazev">
        Kuřecí nudličky s barevnou paprikou, Petrželková rýže
      </div>
      <div class="objednavka-jidlo-info">
        <img src="/Strava/Obsah/mobil/obrazky//info.png"/>
      </div>
      <div class="objednavka-jidlo-detaily">
        Konec objednávání: Pátek 18.3. 13:00
Cena: 20,00 Kč
Popis:
        <br/>
        Oběd 2
      </div>
    </div>
    <div class="objednavka-jidlo-obalka objednavka-jidlo-polevka objednavka-jidlo-liche" title="">
      <input type="hidden" class="objednavka-jidlo-chod" value=""/>
      <div class="objednavka-jidlo-zmena schovane">
        <div id="" class="zaskrtavaciPolicko zaskrtavaciPolicko-povolene zaskrtavaciPolicko-kontrolovane" title="Tuto objednávku již nelze změnit" tabindex="">
          <div style="width: 16px; height: 17px; background: url(/Strava/Obsah/obrazky/zaskrtavaciPolicko_cervena.png) 0px 0px no-repeat;">
          </div>
          <input type="hidden" value="nezaskrtnuto" autocomplete="off"/>
          <span>
          </span>
        </div>
      </div>
      <div class="objednavka-jidlo-nazev">
        Vločkový dezert s jogurtem, Džus, Ovocný čaj, Voda s citrónem, Mléko ochucené
      </div>
      <div class="objednavka-jidlo-info">
        <img src="/Strava/Obsah/mobil/obrazky//info.png"/>
      </div>
      <div class="objednavka-jidlo-detaily">
        Popis:
        <br/>
        Doplněk
      </div>
    </div>
  </div>
</div>

-----------------------------------
Pátek 18. 3.
-----------------------------------
<div class="objednavka-den-obalka" title="Pátek 18. 3.">
  <div class="objednavka-den-datum">

            Pátek 18. 3.

  </div>
</div>

//EDIT: Výstup samozřejmě pokračuje dál, jen by to bylo moc dlouhé

Editováno 18.3.2016 22:48
Odpovědět
18.3.2016 22:47
2x piš, jednou debuguj
Avatar
Josef Kuchař - Pepa489:19.3.2016 11:22

Vyřešeno, chyba byla, že jsem hledal v kořenu:

DomElement dateElement = (DomElement) lunch.getByXPath("//*[contains(@class, 'objednavka-den-obalka')]").get(0);

takže stačilo přidat tečku:

DomElement dateElement = (DomElement) lunch.getByXPath(".//*[contains(@class, 'objednavka-den-obalka')]").get(0);
:)
Akceptované řešení
+5 Zkušeností
Řešení problému
Nahoru Odpovědět
19.3.2016 11:22
2x piš, jednou debuguj
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.