Screjet
проблема не в том, чтобы написать код на javascript или xpath а в том, чтобы заставить этот код работать под Selenium-ом.
В самом selenium-е есть /html-xpath/example.html с примером :
PHP:
var result = document.evaluate("count(//span[@class='Number'])", document, null, XPathResult.NUMBER_TYPE, null);
document.write("<h1>\"count(//span[@class='Number'])\" as Number</h1>" + result.getNumberValue());
если его просто в страницу вставить - работает.
Но вот сделать тест из этого кода пока не получается.
-~{}~ 25.09.05 16:23:
пробовал вот такой тест :
Код:
<tr>
<td>verifyText</td>
<td>xpath=count(//a[contains(@href, 'search')])</td>
<td>20</td>
</tr>
получаю ошибку:
Код:
Element xpath=count(//a[contains(@href, 'second')]) not found
-~{}~ 25.09.05 16:38:
Судя по коду silenium-а этот тест вообще неверный.
Xpath-код должен начинаться с '//' :
Код:
PageBot.prototype.locateElementByXPath = function(xpath, inDocument) {
if (xpath.slice(0,2) != "//") {
return null;
}
...
-~{}~ 25.09.05 17:27:
Для себя решил так (проверял только в FireFox-е - для других броузеров мне не надо) :
Создаем новую проверку и новый локатор :
PHP:
Selenium.prototype.assertCount = function(locator, count) {
var element = this.page().findElement(locator);
assert.assertMatches(count, element);
}
PageBot.prototype.locateElementByCount = function (text, inDocument) {
result = inDocument.evaluate(text, inDocument, null, XPathResult.NUMBER_TYPE, null).getNumberValue();
return result;
}
теперь в файле с тестом создаем такой тест :
Код:
<tr>
<td>verifyCount</td>
<td>count=count(//a[contains(@href, 'search')])</td>
<td>20</td>
</tr>