代码之家  ›  专栏  ›  技术社区  ›  Balaji

无法使用Selenium Cucumber通过Capybara单击分级图像

  •  0
  • Balaji  · 技术社区  · 6 年前

    这是下面的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在cumber中尝试了以下代码,但我无法单击分级图像

    img_src passed as“/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_文本作为“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 回复  |  直到 6 年前
        1
  •  1
  •   Thomas Walpole    6 年前

    为了点击一个特定的星,你需要做的是

    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
    
        2
  •  1
  •   mbuechmann    6 年前

    尝试不要转义前两个解决方案中的单引号:“”=>'。这行吗?

    第二个解决方案中的javascript应该更改:

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