2017-12-28 16 views
0

Ich möchte eine Liste in einer Website mit Java analysieren. Ich weiß bereits, wie man die Liste mit Jsoup analysiert - also ist dieser Teil fertig und funktioniert."Klicken" auf Website-Schaltfläche

Um jedoch die Liste in der Webseite anzuzeigen, muss ich einen Knopf drücken und ich weiß nicht, wie man das mit Java macht. Ich habe bereits eine ähnliche Frage zu SO gefunden: Programmatically click a webpage button. Ich denke, ich könnte HttpURLConnection und KVP dafür verwenden, aber ich weiß nicht, wie man es zur Arbeit bringt.

Der Listenwähler sieht so aus: I would like to press Show all button Ich möchte die Schaltfläche Alle anzeigen drücken.

-Code, die ich in der HTML-Datei gefunden:

<div class="row top-buffer"> 
    <div class="col-md-6 col-sm-4 col-xs-6 nopadding"> 
     <button type="button" id="clearselection" class="btn btn-knx" style="float: right; margin: 0px">Clear selection</button> 
    </div> 
    <div class="col-md-6 col-sm-4 col-xs-6 nopadding"> 
     <button type="button" id="showall" class="btn btn-knx align-right" style="float: left">Show all</button> 
    </div> 
</div> 

Weiß jemand, wie dies geschehen ist? ..es ist übrigens nicht nur eine Taste die ich auf dieser Website drücken muss sonst würde ich es manuell machen. Sobald ich weiß, wie es mit einem Knopf gemacht wird, kann ich es auch für die anderen herausfinden.

UPDATE: Ich möchte darauf hinweisen, dass ich keinen Zugriff auf die HTML-Datei habe. Ich möchte grundsätzlich einen Knopfklick eines Webseitenbesuchers simulieren. Es tut mir leid, dass ich nicht klar war.

UPDATE-2: Ich habe gerade angefangen, wieder daran zu arbeiten. Ich fand den Javascript Code für die Schaltfläche auf der Webseite:

$('#showall').on('click', function() { 
      $('.mask').show(); 
      $('#name').attr('value', ''); 
      $("#letter option").removeAttr('selected'); 
      $("#letter option[value='']").attr('selected', true); 
      $.ajax({ 
       url: '/src/international/Data/partListAjax', 
       type: 'POST', 
       dataType: "html", 
       data: { 
        data: $('#filterForm').serialize(), 
        wTexts: {"Company":"Company","Country":"Country","Name":"Name","Total":"Total","search":"Search","matches_found":"matches found","search_no_results":"Your search did not match any results."}, 
        national: 'null', 
        currentProject: 'nma-en' 
       }, 
       success: function (data) { 
        if (data.indexOf("Allowed memor") >= 0) { 
         $('#accordion2').html("<div class='alert alert-warning' role='alert'>Please use our search engine</div>"); 
         $('.mask').hide(); 
         $('#clearselection').attr('disabled', 'disabled'); 
         $('#showall').attr('disabled', 'disabled'); 
        } else { 
         $('#accordion2').html(data); 
         $('.mask').hide(); 
         $('#clearselection').attr('disabled', 'disabled'); 
         $('#showall').attr('disabled', 'disabled'); 
        } 
       } 
      }); 
     }); 

Wenn die Tastenfunktion Aufruf nicht funktioniert, ich werde versuchen, direkt senden/löst den Ajax Befehl, der in der Funktion enthalten ist.

+1

Sie benötigen einen Browser-Client irgendeiner Art, wie wäre es mit einem Webview. Siehe https://stackoverflow.com/questions/30113445/how-to-perform-a-button-click-inside-a-webview-android – petey

+1

Bitte gehen Sie durch diese, https: //www.codeproject.com/Articles/392603/Android-addJavaScriptInterface –

+1

Das missbräuchliche 'android'-Tag entfernt –

Antwort

0

Ich habe es endlich zur Arbeit mit Selenium WebDriver. Ich habe gerade ein Tutorial auf YouTube gesehen und innerhalb einiger Stunden war alles erledigt. Unglaublich. :)

1

LordBullington, ich habe dies auf meiner Website auch getan, unten Lösung funktioniert perfekt für mich.

Zuerst müssen Sie eine Variable an die Benutzeroberfläche senden.

wenn Sie Servlet verwenden, können Sie, dass

durch tun
request.setAttribute("clickbutton", "yes"); 

wenn Sie Frühling verwenden, können Sie das tun, indem

Map<String, Object> model = new HashMap<String, Object>(); 
model.put("clickbutton", "yes"); 
return new ModelAndView("yourView", model); 

Dann in Ihrem HTML, halten eine versteckte Variable empfange die von JAVA gesendete Variable.

<input type="hidden" id="clickbutton" value="${clickbutton}"> 

Verwenden Sie dann Jquery, um die Schaltfläche beim Laden der Seite auszulösen. Stellen Sie sicher, dass dieser jquery-Code hinter dem versteckten Eingabe-Tag steht.

$(document).ready(function() { 
    if(('#clickbutton').val()=='yes') { 

     //use your button id here 
     $("#youButtonIdHere").click(); 
    } 
}); 
+0

Vielen Dank für Ihre Antwort, aber ich habe keinen Zugriff auf die HTML-Datei. Kann ich immer noch einen Knopfklick mit der Taste info (id), die ich habe, simulieren? Oder vielleicht gibt es ein Werkzeug, um die Kommunikation mit der Website zu analysieren. So konnte ich beim Drücken der Taste herausfinden, was gesendet wird. – LordBullington

Verwandte Themen