(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>
答案 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