黄瓜和水豚,单击非链接或按钮元素

发布于 2024-09-15 23:45:01 字数 111 浏览 8 评论 0原文

我正在尝试使用 Cucumber/Capybara/Selenium 堆栈测试就地编辑器,但我的问题是编辑器是通过单击 div 而不是链接或按钮来激活的。我似乎不知道如何让水豚做到这一点。有办法做到这一点吗?

I am trying to test an inplace editor using Cucumber/Capybara/Selenium stack, but my problem is that the editor is activated by clicking a div and not a link or button. I can not seem to figure out how to get Capybara to do this. Is there a way of doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浊酒尽余欢 2024-09-22 23:45:01

您可以通过 Capybara:: 单击某个元素元素.click。我在 web_steps.rb 中添加以下内容以单击 div。

When /^(?:|I )click within "([^"]*)"$/ do |selector|
  find(selector).click
end

还有 Element.trigger('mouseover' ) 似乎可以启用悬停,但不能与 Selenium 一起使用。

您也很可能需要使用 Capybara 提供的 @javascript 标签来装饰您的功能/场景。

You can click on an element via Capybara::Element.click. I add the following for this in my web_steps.rb to click on divs.

When /^(?:|I )click within "([^"]*)"$/ do |selector|
  find(selector).click
end

There is also Element.trigger('mouseover') which appears to enable hover albeit not working with Selenium.

It is also very likely you will need to decorate your feature/scenario with Capybara's provided @javascript tag.

日裸衫吸 2024-09-22 23:45:01

除了能够像 @Jim Mitchener 解释的那样单击按钮元素之外,您还可以通过以下方式单击文本的一部分:

# WhenI click on the text "Sign in"
When(/^I click on text "(.*?)"$/) do |text|
  click_text(text)
end

def click_text(text)
  elem = find(:xpath, "//*[contains(translate(text(), '#{text.upcase}', '#{text.downcase}'), '#{text.downcase}')]", match: :first, wait: false)
  scroll_to(elem, -200)
  elem.click
end

此辅助函数与 find(selector).click 执行相同的操作,它找到文本元素。

我发现这篇文章非常好,它解释了您可以在cucumber中编写的不同类型的步骤。

Besides being able to click on button elements like @Jim Mitchener explained, you can also click on a part of a text in the following way:

# WhenI click on the text "Sign in"
When(/^I click on text "(.*?)"$/) do |text|
  click_text(text)
end

def click_text(text)
  elem = find(:xpath, "//*[contains(translate(text(), '#{text.upcase}', '#{text.downcase}'), '#{text.downcase}')]", match: :first, wait: false)
  scroll_to(elem, -200)
  elem.click
end

This helper function does the same thing as find(selector).click, it finds the text element.

I found this article very good, it explains different types of steps you can write in cucumber.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文