2010-07-15 35 views
7

Ben, benim yaşam için, teçhizat bu siteyi kapmak kadar HtmlUnit'in olamaz:imkansız site?

http://www.bing.com/travel/flight/flightSearch?form=FORMTRVLGENERIC&q=flights+from+SLC+to+BKK+leave+07%2F30%2F2010+return+08%2F11%2F2010+adults%3A1+class%3ACOACH&stoc=0&vo1=Salt+Lake+City%2C+UT+%28SLC%29+-+Salt+Lake+City+International+Airport&o=SLC&ve1=Bangkok%2C+Thailand+%28BKK%29+-+Suvarnabhumi+International&e=BKK&d1=07%2F30%2F2010&r1=08%2F11%2F2010&p=1&b=COACH&baf=true

Ben arka planda çalışan komut dosyalarının büyük miktarlarda ile ilgisi var eminim. Belki de bu betikleri tam olarak yüklemek için yeterli zaman verilmiyor?

Ayrıca, sadece bing.com/travel'i yakalamayı denedim ve hiçbir başarı da denemedim. Yeni HtmlPage istemcisinin getPage işlevini kırıyor.

çıktı runtimeErrors bir bolluk ("Bu işlemi tamamlamak için gerekli veriler henüz mevcut değildir"), bir eksik atılan aynı SourceName ("http://www.bing.com/travel/jsxc.vjs?a=common&v=5.5.0-1278007084280")

Sonra

birkaç istisna için tüm "(verir o javascript çağırır Bing.com bir çift komut. sonra

", sonra aniden sona erer.

bunu başkalarının görmek mümkün olmayabilir sorunların bir avuç olabilir biliyoruz ve orada eğer öyleyse öneri yok, birisi bu iki siteyi kendi Ht mlUnit kullanın ve XML veya metin sonuçlarının temel çıktılarını alabilir mi? Burada fantezi bir şey yapmaya çalışmıyorum, sadece sonuçların bazı temel metinlerini veya XML çıktılarını al.

Başka birinin uygulamasının işe yarayıp yaramadığını bilmek çok işe yarayacaktı, böylece jüri üyelerini tamamlamaya devam edebilirim.

KODU:

import com.gargoylesoftware.htmlunit.html.HtmlPage; 
import com.gargoylesoftware.htmlunit.WebClient; 

public class test { 

public static void main(String[] args) throws Exception { 

     WebClient client = new WebClient(); 
     System.out.println("webclient loaded"); 

     HtmlPage currentPage = client.getPage("http://www.bing.com/travel/flight/flightSearch?form=FORMTRVLGENERIC&q=flights+from+SLC+to+BKK+leave+07%2F30%2F2010+return+08%2F11%2F2010+adults%3A1+class%3ACOACH&stoc=0&vo1=Salt+Lake+City%2C+UT+%28SLC%29+-+Salt+Lake+City+International+Airport&o=SLC&ve1=Bangkok%2C+Thailand+%28BKK%29+-+Suvarnabhumi+International&e=BKK&d1=07%2F30%2F2010&r1=08%2F11%2F2010&p=1&b=COACH&baf=true"); 
     client.waitForBackgroundJavaScript(10000); 
     System.out.println("htmlpage init'd"); 

     //System.out.println(currentPage.getTitleText()); 
     String textSource = currentPage.asXml(); 
     System.out.println(textSource); 

} 

} 

teşekkürler!

cevap

3

deneyin ekleyerek bu:

client.setThrowExceptionOnScriptError(false) ; 

O çalıştırmak için uzun zaman alır ve çocuk bunu günlük Kusmak yok ... ama sonunda bir sayfa çıktı: Ben de vardı

htmlpage init'd 
<?xml version="1.0" encoding="utf-8"?> 
<html id=""> 
    <head> 
    ... 
+0

kuyu oğul ... teşekkürler! yüzden buna değer kadar gidiyor hataları ve uyarıları düzeltin, bir sayfa çıkışı aldığım sürece, belki de bu çabaya değmez ... –

+0

Bir çok şeyi hatırladığımdan sadece bilgi girişi yaptım. Bu benim HtmlUnit testlerimin tipik bir örneğidir, konsol çılgın gibi sayfa çıkarsa. , bu konuda endişelenmeyin. –

+0

Sadece yukarıdaki satırı eklemenin gerçekten işe yaradığını doğrulamak istiyorum. Aynı sorunu yaşıyorum - sayfa yükleme sırasında eski bir JS içeriği yüklediğimi bildiren bir hata alıyorum. Daha sonra, otomatik form gönderimi sırasında hata, JS içeriğinin henüz mevcut olmamasıdır. Aynı günlükler hala görünüyor, ancak en azından tüm yürütme atılır ve durdurur RuntimeException gitti. Ancak, bana ilk etapta form girişi ve gönderme tamamlamak için yüklenen ediliyordu JS gerekli değildir, çünkü bu sadece olduğunu düşünüyorum. –

2

Tarayıcılar (JavaScript, aynı zamanda HTML, vb css ve) onlar hata olarak algılar ne olabilir için yüksek toleransı vardır. Bu kısmen, Javascript'in nasıl uygulandığına dair çeşitli çatışan "standartlar" :) nedeniyle oluşur. Bir tarayıcıda Tamam görüntülenen bir şey başka bir konuda sorun olur. Tüm bu mesajlar görünür hale geldiğinde biraz rahatsız edici olmalı.

Bunu Internet Explorer'da görüntülemek için ayarlarınıza girin ve "Her komut dosyası hatası ile ilgili bir bildirim görüntüle" için "Gelişmiş Ayarlar" seçeneğini işaretleyin ve ardından aynı sitelere göz atın. IE'nin ne kadar kodla karşılaştığını, sorun olarak algılayabileceğini göz ardı ederek şaşırmış olabilirsiniz.

HtmlUnit'i çeşitli tarayıcılarda kullanmak, bu çakışmalardan bazılarını açığa çıkarır.

HtmlUnit, "Yoksay" gibi bir şey yapmasını anlatıyor ...Bu tarayıcı için "tam olarak geçerli bir uygulamadır. Benim durumumda, tüm kullanıcıların Internet Explorer'ı kullandığını kontrol eden bir siteden veri getiriyorum (Hayır, bunu neden yaptığına dair hiçbir fikrim yok.) 't javascript hataları görmezden olmadan devam. İlginç sitesi çalışıyor IE JavaScript hataları oradayız sürü düşünse de. silahın