2016-12-22 2 views
0

Ich benutze Selenium IDE.Selenium IDE: Wie man das Attribut gibt existiert

Ich kann testen, ob das Attribut eines Elements einen bestimmten Wert hat. Aber wie kann ich testen, ob das Attribut überhaupt existiert?

Hier ist die Linie, die, wenn das Attribut einen bestimmten Wert erfolgreich getestet hat:

<tr> 
    <td>assertAttribute</td> 
    <td>[email protected]</td> 
    <td>disabled</td> 
</tr> 

Hier ist die Linie, die erfolglos prüft, ob das Attribut in erster Linie vorhanden ist:

<tr> 
    <td>assertElementPresent</td> 
    <td>[email protected]</td> 
    <td></td> 
</tr> 

Wie Bekomme ich es zur Arbeit?

danken,

-Ilya

Antwort

0

Sie können die "getAttribute" Methode verwenden, und wenn es "null" zurückgibt, bedeutet es, dass es kein Attribut überhaupt ist ...

Von Selen Dokumentation:

WebElement.getAttribute(attributeName) → Thenable<(string|null)> 

Spiel ein Befehl für den Wert des gegebenen Attribut des Elements abzufragen. Gibt den aktuellen Wert zurück, auch wenn er nach dem Laden der Seite geändert wurde. Genauer gesagt, wird diese Methode den Wert des angegebenen Attributs zurückgeben, es sei denn, dieses Attribut in diesem Fall der Wert der Eigenschaft mit dem gleichen Namen nicht vorhanden ist, ist zurückgegeben. Wenn keiner der Werte festgelegt ist, wird null zurückgegeben (z. B. die Eigenschaft "value" eines TextArea-Elements). Das Attribut "style" wird bestmöglich in eine Textdarstellung mit einem nachgestellten Semikolon umgewandelt.

Zum Beispiel:

HTML-Code:

<div id="a"   >1</div> 
<div id="a" x="xxx" >2</div> 
<div id="a" x  >3</div> 

Prüfregeln in NodeJS:

var webdriver = require('selenium-webdriver'); 
var capabilitiesObj = { 
    'browserName'  : 'firefox' 
}; 
var driver   = new webdriver.Builder().withCapabilities(capabilitiesObj).build(); 
driver.get('http://localhost/customer.js/temp/index60.html'); 

driver.findElements(webdriver.By.css('div[id=a]')).then((elements) => { 
    elements[0].getAttribute('x').then((att)=> { 
     console.log(att); 
    }); 

}).catch(console.log.bind(console)); 

driver.quit(); 

Das Ergebnis für jedes div wird anders sein:

for div 1: null 
for div 2: 'xxx' 
for div 3: '' 
+0

Er markiert es mit beiden Selen & Selenium IDE, aber die Frage nach einer IDE-Lösung wurde gefragt. – DMart

0

I glaube nicht, dass das simpl Der ID-Locator behandelt das Attribut. So XPath wechseln:

Dies sollte funktionieren:

<tr> 
    <td>verifyElementPresent</td> 
    <td>xpath=//.[@id='id3' and @attribute1]</td> 
    <td></td> 
</tr> 

Beachten Sie, wenn Sie die spezifische ID (ID1, ID2, ID3) ändern Sie es für den ersten 2-IDs passieren wird, aber nicht für den 3.:

<div id="id1" attribute1="xyz" style="background-color: transparent;">Some text</div> 
<div id="id2" attribute1="" style="background-color: transparent;">Some text</div> 
<div id="id3" style="background-color: transparent;">Some text</div> 
Verwandte Themen