Получить элемент с jquery и селен IDE 1.0.8 - PullRequest
9 голосов
/ 15 ноября 2010

Я пытаюсь получить элемент с jquery и Selenium IDe 1.0.8.

<td>storeValue</td>
<td>$('#result').find('img').filter('[alt=&quot;NameOfPhoto&quot;]').eq(0)</td>
<td></td>

И в журнале я получаю

[error] Element $('#result').find('img').filter('[alt="NameOfPhoto"]').eq(0) not found 

Когда я помещаю эту команду в firebug Iполучить этот элемент: /

Почему это не работает?

РЕДАКТИРОВАТЬ: В качестве альтернативы, например, вы можете дать мне код, как получить идентификатор первого объекта с тегом JAVA на главной странице stackoverflow.

TAG:

<a rel="tag" title="show questions tagged 'java'" class="post-tag" href="/questions/tagged/java">java</a>

, а пример результата:

<div id="question-summary-4303985" class="question-summary narrow">

:

question-summary-4303985

Ответы [ 6 ]

8 голосов
/ 12 июля 2011

На основе других постов я попробовал следующее, и это сработало.

Добавьте приведенный ниже код в user-extensions.js:

function jQuery (selector)
{
    return selenium.browserbot.getUserWindow().jQuery(selector);
}

Затем вы можете получить доступ к любой функции jQuery, выполнивиспользуя ключевое слово jQuery вместо $.Просто убедитесь, что тестируемая страница ссылается на файл jQuery js.

7 голосов
/ 22 марта 2011

Чтобы использовать jQuery с Selenium IDE, его расположение ниже.(Убедитесь, что вы загрузили jQuery на свою страницу)

this.page().getCurrentWindow().wrappedJSObject.jQuery()

Вы можете сохранить расположение функции в переменной Selenium.

<tr>
    <td>store</td>
    <td>this.page().getCurrentWindow().wrappedJSObject.jQuery</td>
    <td>jq</td>
</tr>

Затем вы можете использовать их в своих тестах, например:

<tr>
    <td>assertEval</td>
    <td>${jq}('div').attr('foo')</td>
    <td>bar</td>
</tr>

Выше совпадений <div foo='bar' /> с использованием jQuery.


Редактировать: В качестве альтернативы вы можете получить к нему доступ:

this.browserbot.getUserWindow().jQuery
selenium.browserbot.getUserWindow().jQuery

источник альтернативы: http://cssgreut.wordpress.com/2010/12/20/run-selenium-ide-tests-with-jquery-selectors/

0 голосов
/ 09 апреля 2011

Попробуйте эту инструкцию из блога немецкого Рамма

Сначала загрузите Sizzle , который является механизмом выбора для jQuery, и распакуйте sizzle.js в удобное место.
Во-вторых, создайте пустой файл user-extensions.js. Кстати, имя может быть любым, что вы хотите.
Добавьте это к user-extensions.js

PageBot.prototype.locateElementBySizzle = function(locator, inDocument) {
  var results = [];
  window.Sizzle(locator, inDocument, results);
  return results.length > 0 ? results[0] : null;
}

В-третьих, перейдите в Selenium IDE, Options -> Options… и добавьте sizzle.js и user-extensions.js в «Расширения Selenium Core».
Перезапустите Selenium IDE (просто закройте все его экземпляры и снова откройте его), и теперь вы можете использовать sizzle = (locator) везде, где требуется «locator»

Ваш селектор будет выглядеть так:

#result img[alt="NameOfPhoto"]:eq(0)

Селекторы JQuery в основном исходят от селекторов CSS, поэтому вы можете использовать их также в селене

css=cssSelector

0 голосов
/ 30 ноября 2010

Вы поставили jQuery в Selenium jar?Если нет, вы не можете использовать этот синтаксис.

0 голосов
/ 23 ноября 2010

Пример сохранения текущей даты с помощью JavaScript и вывода ее в консоль журнала Selenium с помощью ${}:

<tr>
    <td>store</td>
    <td>javascript{new Date}</td>
    <td>foo</td>
</tr>
<tr>
    <td>echo</td>
    <td>${foo}</td>
    <td></td>
</tr>

Как вы можете видеть, как использовать store с результатом выражения JavaScript add javascript{} arround выражения.

Ваш пример использования javascript{storedVars['bar']} для вывода сохраненной переменной.

<tr>
    <td>store</td>
    <td>javascrip{jQuery('#result').find('img').filter('[alt="NameOfPhoto"]').eq(0)}</td>
    <td>bar</td>
</tr>
<tr>
    <td>open</td>
    <td>javascript{storedVars['bar']}</td>
    <td></td>
</tr>

JavaScript в Selenium:

С javascript{alert('hello')} вы можете запускать JavaScript / jQuery в полях значений.

У Selenium также есть расширение, показывающее, какие переменные хранятся: http://reallysimplethings.wordpress.com/2010/09/28/the-stored-variables-viewer-plugin-for-selenium-ide-v1-3-released/

0 голосов
/ 18 ноября 2010

попробуйте использовать jQuery вместо $(). Знак доллара в селене имеет другое значение.

EDIT

Насколько я могу судить, вы не можете использовать jQuery для выбора элементов. Поиск в Google ничего не дал. Просто используйте Xpath.

...