2012-08-01 4 views
5

Wie zu bestimmen, ob eine Checkbox XPathXpath Kontrollkästchen, um festzustellen, „geprüft“ Attribut in Selenium IDE

Scheck oder nicht durch ist

Derzeit bin ich versucht:

//input[@type='checkbox' and @checked='true')] 

Ich habe mehrere Kontrollkästchen mit gleichem IDs so Ich muss das nächste Kontrollkästchen auswählen, das nicht ausgewählt/markiert ist.

Insbesondere muss ich dies für Selenium IDE

bearbeiten , was ich brauche eigentlich etw wie:

|storeXpathCount | //input[@name='xyz' and @checked='checked'] | is_checked | 

wenn Checkbox 'xyz' aktiviert ist, sollte is_checked Wert 1 sonst 0

danke

Antwort

3

enter image description here

Hier stnewrecord ist Klasse von Check-Box. Skript wird die Nummer der Checkbox speichern, und entsprechend wird die Schleife folgen. Es wird geprüft, ob die Checkbox aktiviert ist oder nicht, andernfalls wird der nächste Schritt ausgeführt.

xpath=(//input[@class='stnewrecord'])[${i}] 

Dies ist Xpath der Check-Box. "i" ist Position, sie wird bei jeder Iteration zunehmen.

Lassen Sie mich wissen, ob sein für Sie arbeiten oder nicht ..

+0

Bitte überprüfen Sie meine Frage noch einmal – sakhunzai

+0

Danke hab '' storeValue | // Eingabe [@ name = 'xyz'] | is_checked wird "on" oder "off" speichern, je nachdem, ob das Kontrollkästchen aktiviert ist oder nicht – sakhunzai

0

so etwas funktioniert möglicherweise:

//input[@checked='checked']/following-sibling::*[1][not(@checked='checked')] 
+1

'// input [ @ checked = 'checked'] 'funktioniert nicht das ist das Problem :( – sakhunzai

8

XPath

// Xpath, only works in certain situations 
//input[@type='checkbox' and @checked='xyz'] 

funktioniert nur, wenn in der HTML-Quelle der Checkbox dort ein Attribut als

checked="xyz" 
folgt

wo der Entwickler frei ist, "xyz" durch nichts zu ersetzen: "true", "geprüft", "ischecked", ...

Wenn also kein solches Attribut vorhanden ist, funktioniert der oben genannte xpath nicht.

Während für mehr Einsicht warten, könnten Sie mit einem CSS-Selektor, betrachten, die auf ein solches Attribut nicht davon ab:

// CSS selector, for all checkboxes which are checked 
input:checked[type='checkbox'] 

// CSS selector, for all checkboxes which are not checked 
input:not(:checked)[type='checkbox'] 

Beachten Sie, dass ohne

[type='checkbox'] 

Sie auch Radios gegeben werden :-)

+0

Ich denke, du hast meinen Punkt verpasst, ich brauche die spezifische Sache mit Seleinum IDE – sakhunzai

2

Allerdings gibt es eine Lösung ohne Verwendung von CSS-Klassen und Selektoren.

Verwenden

//input[@type='checkbox' and @checked] 

oder

//input[@type='checkbox' and not(@checked)] 

statt

//input[@type='checkbox' and @checked='xyz'] 
+1

hast du das in Selenium IDE versucht? @checked value ist 'on' oder 'off' ist kein Boolescher Wert! – sakhunzai

+0

Ich hatte dies nicht in der IDE versucht, aber ich benutze diesen Ausdruck Ausdruck mit Selenium-Erweiterung für PHPUnit. Ich denke jedoch, dass die Xpath-Engine für beide Tools gleich ist. Lassen Sie mich wissen, wenn Sie dies in der IDE versucht haben. – nichiporets

+0

ja Ich habe einige Tests für Selen IDE und es gibt keine booleschen Werte zurück, stattdessen 'on', 'off' für @checked Attribut – sakhunzai

0

können Sie versuchen, diese ein:

//*[@type='radio'][@checked='checked']/ 
//*[@type='radio'][not(@checked='checked')]/ 
+0

Danke, wir sprechen strikt im Kontext von Selenium IDE, in diesem Kontext seine '@checked 'attibrubes hat 'on' oder 'off' Wert, lesen Sie bitte die obigen Antworten für die Geschichte – sakhunzai

+0

Ich habe diese in Selenium IDE getestet und es schien, dass es funktionierte, aber ich könnte falsch liegen, da ich nach etwas ähnlichem suchte . – kenorb