如何处理黄瓜和水豚的动态元素

时间:2017-09-26 01:05:02

标签: ruby selenium rspec cucumber capybara

Click for image)我正在开发一个项目来编写测试登录功能的场景。由于某种原因,水豚没有访问动态元素。

重现步骤:

1)访问Redfin.com(例如)

2)点击登录按钮

3)出现动态弹出对话框

4)点击“继续发送电子邮件”,然后输入详细信息并点击“提交”。

我无法找到任何带有find(#)的元素,并且无法点击提交或输入详细信息。

另外我相信webapp是使用React构建的。 请告诉我如何处理这个问题。

<div class="emailSignInButtonWrapper" style="position: relative;">
  <button class="button Button tertiary emailSignInButton v3" type="button" tabindex="0" data-rf-test-name="submitButton">
    <span>
      <span class="signInText">Continue with Email</span>
    </span>
  </button>

2 个答案:

答案 0 :(得分:0)

您所谈论的所有元素都没有ID,因此使用#<id>find('#my_button').click)查找的CSS不起作用。但是,要点击该按钮,您应该能够

click_button('Continue with Email') # case of the text matters

click_button(class: 'emailSignInButton')

这一切都假设您正在使用支持JS的Capybara驱动程序 - Link

这里的代码显示,如果使用支持JS的驱动程序

,它会起作用
require 'capybara/dsl'
require 'selenium-webdriver'

session = Capybara::Session.new(:selenium_chrome)
session.visit "https://www.redfin.com"

session.click_link('Sign In', href: nil)

session.click_button('Continue with Email')

答案 1 :(得分:0)

这是在红鳍网站上对我有用的东西:

scenario "bring up signup form on redfin" do
  visit 'https://www.redfin.com'
  find('a', :text => 'Sign In').click
  click_button('Continue with Email')
end