ボタン名で指定できるElementLocator
前にも書いたけど現状ではname属性がないボタンを(簡単に)クリックすることができない。
でも、リンクをlink=fooで指定できるんだったらボタンをbutton=barで指定できたっていいじゃないかということで、以下はボタン名で指定できるElementLocator。またまたselenium-browserbot.jsに以下を追加するだけ。
PageBot.prototype.locateElementByButton = function(identifier, inDocument) { var elements = inDocument.getElementsByTagName("input"); if (elements) { for (var i = 0; i < elements.length; i++) { var element = elements[i]; var attr = element.getAttribute("type"); if ((attr == "submit") || (attr == "button") || (attr == "reset")) { if (element.getAttribute("value") == identifier) { return element; } } } } return null; };
これで
というボタンは
<tr> <td>clickAndWait</td> <td>button=押しちゃダメ</td> <td> </td> </tr>
と書けばクリックできる。button=の値にはボタンに表示されているラベル名を指定すればよいので、テストケースも書きやすくなる。
これでボタン押し放題。