watir-webdriver нажмите на изображение

Близкие,

У меня есть изображение со следующим HTML-кодом:

<div unselectable="on" class="x-grid-cell-inner x-unselectable" style="; text-align: right;" id="ext-gen1453">
<img alt=""src="data:image/gif;base64,FRFRFR/GFFFFFFFFFF==" class="x-action-col-icon x-action-col-0 folder-action-add folder-action" data-qtip="Add New Music File" id="ext-gen1300">

Когда я нажимаю на изображение, оно должно открыть всплывающее окно, чтобы я мог добавить новый музыкальный файл, я пробовал несколько вещей, но не могу щелкнуть это изображение. Какие-либо предложения?

Большое спасибо


person Community    schedule 07.03.2012    source источник
comment
Можете ли вы показать нам код, который вы пробовали до сих пор? А также, что вы подразумеваете под «я не могу нажать» - возникает ли ошибка? Или вы просто не видите ожидаемого результата?   -  person Jon M    schedule 08.03.2012
comment
спасибо за ответ Джон, я пробовал это @browser.image(:text => "Add New Music File").click и получаю ошибку unable to locate element, using {:tag_name=>"img", :text=>"Add New Smart Folder"} (Watir::Exception::UnknownObjectException)   -  person    schedule 08.03.2012
comment
Вы пытались найти элемент по идентификатору (в данном случае «ext-gen1300»)? На самом деле в разметке нет атрибута text, только атрибут data-qtip, поэтому неудивительно, что код, который вы вставили выше, не находит его.   -  person Jon M    schedule 08.03.2012
comment
Что это за кнопка, о которой вы говорите?   -  person Mark Thomas    schedule 08.03.2012
comment
Марк, я обновил его, я имел в виду изображение   -  person    schedule 08.03.2012
comment
Джон, я пытался найти элемент по идентификатору, это мой фрагмент кода @browser.image(:id => "ext-gen1300").click, это не работает. Я все еще получаю сообщение об ошибке unable to locate element, using {:tag_name=>"img", :id=>"ext-gen1300"} (Watir::Exception::UnknownObjectException)   -  person    schedule 08.03.2012
comment
дело в том, что идентификатор генерируется динамически и каждый раз меняется.   -  person    schedule 08.03.2012
comment
Покажите нам больше HTML. В div может быть родственный элемент, который можно использовать для его идентификации. Кроме того, класс содержащего div заставляет меня думать, что это может быть частью какого-то причудливого элемента управления, и, возможно, вам, возможно, придется сначала сделать что-то вроде наведения или наведения курсора, чтобы вызвать изменение, которое делает вещь доступной для выбора.   -  person Chuck van der Linden    schedule 08.03.2012
comment
Судя по имени класса, это часть элемента управления сеткой ExtJS, который обычно выполняется через таблицу. Самый простой способ найти эту вещь может быть другим содержимым в той же строке. Также вполне возможно, что вам нужно нажать на div, а не на изображение внутри него. Наконец, вы можете идентифицировать изображение на основе его значения src.   -  person Chuck van der Linden    schedule 08.03.2012


Ответы (2)


Вы можете нажать на него по классу или частичному совпадению класса.

@browser.image(:class=>/folder-action-add folder-action/).click

Вот список идентификаторов, которые вы можете использовать для watir, я думаю, что это в основном то же самое для watir-webdriver.

person Dave McNulla    schedule 08.03.2012

До сих пор у вас не было последовательного способа фактической идентификации элемента. Из того, что вы сказали в комментариях, вы пробовали атрибут «текст», которого не существует, и атрибут «id», который автоматически генерируется и каждый раз отличается.

Вам нужно найти способ последовательно идентифицировать элемент. Обычно предпочтительнее использовать семантический класс для элемента, чтобы сделать стилизацию и тестирование проще и менее хрупкими. У вас есть несколько объявленных классов, возможно, «folder-action-add» ясно выражает намерение кнопки? Если нет, вы можете добавить что-то вроде «добавить музыкальный файл».

Затем вы сможете использовать watir для выбора элемента по его классу, я не знаком с синтаксисом, но, думаю, @browser.image(:class => 'add-music-file') может выполнить эту работу.

person Jon M    schedule 08.03.2012