2016-12-22 35 views
0

私はSelenium IDEを使用しています。Selenium IDE:属性をアサートする方法はありますか

要素の属性に一定の値があるかどうかをテストする方法はわかっています。しかし、その属性が最初に存在するかどうかをテストするにはどうすればよいですか?ここで

は、属性が特定の値を持っている場合、正常テストラインである:ここでは

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

は、属性が最初の場所に存在する場合は失敗したテストラインです:

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

方法私はそれを働かせるか?

感謝、

-Ilya

答えて

0

あなたが「のgetAttribute」メソッドを使用することができ、そしてそれは「ヌル」を返した場合、それはまったくの属性が存在しないことを意味します...

セレンからドキュメント:

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

要素の指定された属性の値を照会するコマンドをスケジュールします。ページがロードされた後に変更された場合でも、現在の値を返します。より正確には、このメソッドは、その属性が存在しないかぎり、指定された属性の値を返します。この場合、同じ名前のプロパティの値が返されます。いずれの値も設定されていない場合、nullが返されます(たとえば、textarea要素の "value"プロパティ)。 「スタイル」属性は、末尾のセミコロンを含むテキスト表現に最もよく変換されます。例えば

HTMLコード:Nodejsで

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

テストコード:

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(); 

異なるであろう各DIVに対する結果:

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

彼はSelenium&Selenium IDEの両方でタグ付けしましたが、質問はIDEソリューションを求めていました。 – DMart

0

Iシンプルだとは思わないid locatorが属性を処理します。だから、XPathのに切り替える:

これは動作するはずです:あなたは、特定のID(ID1、ID2、ID3)を変更した場合、それは最初の2つのIDのパスが、第三のために失敗すること

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

注:

<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>