Невозможно найти метод для обнаружения, если элемент существует на странице - PullRequest
0 голосов
/ 19 марта 2011

Я очень новичок в Watir.

У меня есть немного кода Ruby / Watir, который должен обнаружить, существует ли элемент, и если да, щелкните по нему, если нет, щелкните по другомуэлемент.Оба элемента появляются каждый раз.К сожалению, ничего из того, что я пробовал, не работает.

if browser.contains_text("/media/images/icons/reviewertools/editreview.jpg")
then browser.image(:src => "/media/images/icons/reviewertools/editreview.jpg").click
else browser.image(:src => "/media/images/icons/reviewertools/savereview.jpg").click
end

Это в конечном итоге завершается ошибкой с "Невозможно найти элемент, используя {: src =>" / media / images / icons / reviewertools / savereview.jpg "} (Watir:: Exception :: UnknownObjectException) "

Он должен был щелкнуть /editreview.jpg, который был виден.

Я также попытался:

if browser.image("/media/images/icons/reviewertools/savereview.jpg").exists
then browser.image(:src => "/media/images/icons/reviewertools/savereview.jpg").click

, а также:

if browser.image("/media/images/icons/reviewertools/savereview.jpg").exists?

Обратите внимание, что ни один из этих случаев не обнаруживает элемент или не выполняет этого, выполняет условие else.

Пожалуйста, если вы ответите, предоставьте конкретные примеры кода для ваших предложений..

Ответы [ 4 ]

2 голосов
/ 30 марта 2011

Вам нужно использовать один и тот же синтаксис как с кликом, так и с существующим? методы. На это также указывали Кэт, Чак и Кинофрост.

if browser.image(:src => "/media/images/icons/reviewertools/editreview.jpg").exists?
then browser.image(:src => "/media/images/icons/reviewertools/editreview.jpg").click
else browser.image(:src => "/media/images/icons/reviewertools/savereview.jpg").click
end
2 голосов
/ 19 марта 2011
  1. Есть только методы "существуют?" и "существует?" Так что «существовать» не сработает. Проконсультируйтесь здесь .
  2. Можете ли вы попытаться идентифицировать существование другого элемента, например, ссылки. Работает ли это для вас? Не должно быть никаких исключений. В этом случае Watir должен вернуть False.
1 голос
/ 22 марта 2011

Предполагая, что эта вещь действительно является «изображением», как определено ее HTML-тэгом, ваша попытка определить, существует ли объект, проваливается, потому что

  1. вы не используете правильный метод, в Ruby, методы, которые возвращают конец bool в вопросительном знаке
  2. это не текст,

, а в другой попытке вы указали только «что», а не «как» и все еще использовали неправильный метод.

попробуйте это

if browser.image(:src, "/media/images/icons/reviewertools/savereview.jpg").exists?
then browser.image(:src, "/media/images/icons/reviewertools/savereview.jpg").click

В противном случае, внимательно посмотрите на HTML, вы на самом деле смотрите на кнопку?

1 голос
/ 21 марта 2011

Я бы порекомендовал проверить DOM, чтобы дважды проверить, что src для вашего изображения соответствует тому, что вы помещаете.Нажмите F12 в IE8 или используйте любой инструмент, который подходит вашему браузеру.Вы можете попробовать использовать IRB для подключения к браузеру и попытаться найти изображение.

Если это не помогло, я бы попытался найти изображение другим способом.Если изображение в форме, это может вызвать проблемы, и вам придется найти форму перед изображением.

Или попробуйте другой способ найти его, просто чтобы убедиться, что это возможно.

browser.image(:index => 3).click
browser.image(:id => 'an_image').click
browser.div(:id => 'image_container').image(:index => 2).click

Вы можете использовать эту ссылку , чтобы увидеть, как вы можете идентифицировать изображение, и не забывайте, что вы можете использовать более одного идентификатора одновременно, например.(: class => / regexofaclass /,: index => 2)

Нет ничего плохого в вашем коде, как он есть (кроме символа? в конце слова "существует" и последней строки, которая не 'не содержит то, что вы ищете).

...