2016-05-03 11 views
1

Ich habe eine, meiner Meinung nach wirklich knifflige Form. Das Formular ändert divs, versteckte Felder & IDs bei jedem Neuladen. und ich kann kein Muster finden, wie es sich ändert.Tricky Selector casperjs versteckt div

hier ist ein Beispiel für die Klasse .box.box500:

<div class="box box500" style="float:left;display:none;"> 
<span class="errorText"></span> 
<br> 
<input id="czoyNToiaWhfYlNEaDg0ZGNkVi00bUxtckxLZ2cuLiI7" type="text" name="czoyNToiaWhfYlNEaDg0ZGNkVi00bUxtckxLZ2cuLiI7" value=""> 
</div> 
<div id="boxFirma" style="display: none;margin-top: 20px;"> 
<div class="" style="float:left;left;margin-left:10px;display:none;"> 
<a name="personal"></a> 
<div style="overflow:hidden; margin-top: 20px;"> 
<div class="box box500 " style="display:none;"> 
<input id="czoyNToiaWhfYlNEaDg0ZGNkUjh3d2tOOFJFd2cuLiI7" type="text" value="" name="czoyNToiaWhfYlNEaDg0ZGNkUjh3d2tOOFJFd2cuLiI7"> 
<br> 
<span class="errorText"></span> 
</div> 
<div class="box box500 " style="float: left;"> 
<input id="czoyNToiaWhfYlNEaDg0ZGNlVFpMRjFVWjZicEEuLiI7" type="hidden" value="" name="czoyNToiaWhfYlNEaDg0ZGNlVFpMRjFVWjZicEEuLiI7"> 
<input id="czoyNToiaVhxemVtUGRZOHluMkNxdE9pWEd1Y1EuLiI7" type="text" value="" name="czoyNToiaVhxemVtUGRZOHluMkNxdE9pWEd1Y1EuLiI7"> 
<br> 
<span class="errorText"></span> 
</div> 
<div class="box box502 " style="float: left;margin-left: 20px;"> 
<input id="czoxMzoiaXgtQTNQT3VWVmprLiI7" type="text" value="" name="czoxMzoiaXgtQTNQT3VWVmprLiI7"> 
<br> 
<span class="errorText"></span> 
</div> 
</div> 

manchmal das erste verborgene div gibt es, und manchmal nicht. Die ID ändert sich bei jedem Neuladen. Die versteckte Eingabe ist manchmal das erste Kind, manchmal das zweite. Auch das div, manchmal auf der ersten Position manchmal auf der zweiten. Ich habe wirklich keine Ahnung, wie man die Eingabefelder identifiziert.

ist es vielleicht möglich, eine Eingabe wählen wie gefeilt:

this.sendKeys('.box.box500:nth-child(2):style="float: left;" > input:nth-child(2):type="text"', 'text'); 
+0

‘.box.box512 "style = float: left;" > Eingabetyp = Text 'ist nicht klar. Bitte kannst du das als Codeblock ablegen und erklären, in welcher Datei das sein würde? Es liest sich derzeit als Klasse mit einem Inline-Stil. – JDTLH9

+0

ok, ich habe meinen Beitrag aktualisiert. – swapfile

Antwort

1

dies funktioniert:

this.sendKeys('div.box.box500:not([style*="none"]) input[type="text"]', ...); 
1

Könnten Sie den Wähler nicht verwenden:

this.sendKeys('div.box.box500 input[type="text"]:not([style*="display: none"])', ...); 

Ich glaube, das alle spezifischen Eingänge Typ finden würde = "text "Unabhängig von der Reihenfolge auf der Seite.

+0

Einige von ihnen sind manchmal versteckt. – swapfile

+1

Bitte sehen Sie meine Bearbeitung. Ich habe dies auf ähnlichen Code versucht und es funktioniert für mich :) – JDTLH9

+0

Cool. Das versuche ich später. DANKE. – swapfile