Do nového roku jako lepší programátoři? Znovu otevíráme večerní školu programování. Nette framework, návrhové vzory, testování nebo vůbec poprvé kurzy ASP.NET dostupné odkudkoli v republice.

Diskuze: HTMLUnit - Pořád stejné xml

Java Java HTMLUnit - Pořád stejné xml

Avatar
Josef Kuchař (Pepa489):

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):

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.