Невозможно нажать на изображение рейтинга через капибару, используя селен-огурец - PullRequest
0 голосов
/ 18 мая 2018

Это HTML-код ниже.Когда мышь наведена на изображения звезд, источник изображения превращается в star-on.png.Если вы видите приведенный ниже код, это означает, что я дал оценку в две звезды.

<div id="user_rating" class="rating" style="cursor: pointer; width: 100px;">
<img src="/assets/jquery.raty/star-on.png" alt="1" title="">&nbsp;
<img src="/assets/jquery.raty/star-on.png" alt="2" title="">&nbsp;
<img src="/assets/jquery.raty/star-off.png" alt="3" title="">&nbsp;
<img src="/assets/jquery.raty/star-off.png" alt="4" title="">&nbsp;
<img src="/assets/jquery.raty/star-off.png" alt="5" title="">
<input type="hidden" name="score"></div>

Я попробовал следующий код в огурце, используя img src, all и values, но я не могу нажать на изображения рейтинга

img_src передается как "/assets/jquery.raty/star-off.png"

Then /^I click on the image with src "([^\"]*)"$/ do |img_src|
   find("img[src=\'#{img_src}\']", match: :prefer_exact).click
end

alt_text передается как" 3 "

Then /^I click on the image with alt "([^\"]*)"$/ do |alt_text|
  page.execute_script %Q[jQuery("img[alt=\'{alt_text}\']").first().mouseenter();]
  page.execute_script %Q[jQuery("img[alt=\'#{alt_text}\']").first().click();]
end

селектор = правильный xpath пройден

And /^I click by xpath "([^\"]*)"$/ do |selector|
  find(:xpath, selector, visible: true, match: :first).click
end

Может кто-нибудь дать мне знать правильную команду селена, чтобы щелкнуть по рейтингу

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Чтобы щелкнуть по определенной звезде, вам нужно сделать

find("#user_rating img[alt='2']").hover.click # select star 2

Итак, на шаге огурца это будет что-то вроде

Then /^I rate ([^ ]+) with (\d) stars$/ do |id, stars|
  find("##{id} img[alt='#{stars}']").hover.click
end

и будет называться

Then I rate user_rating with 4 stars
0 голосов
/ 18 мая 2018

Старайтесь не избегать одинарных кавычек в ваших первых двух решениях: \ '=>'.Это работает?

Необходимо изменить javascript в вашем втором решении:

page.execute_script %Q[jQuery("img[alt=\'#{alt_text}\']").first().trigger('click');]
...