Capybara/Cucumber/Ruby问题:仅当出现时按element,并在没有错误的情况下继续
我是水豚世界的新手,我在编写一个测试时遇到了很多问题,这个测试在一个屏幕上执行一些操作,而这个屏幕只是偶尔出现 我想点击这个屏幕的一个元素,如果出现,但如果没有出现,我需要继续点击并在下一个屏幕中完成表单 我现在的解决方案很管用,但它真的很难看: 步骤: MyPage实现:Capybara/Cucumber/Ruby问题:仅当出现时按element,并在没有错误的情况下继续,ruby,selenium,cucumber,capybara,Ruby,Selenium,Cucumber,Capybara,我是水豚世界的新手,我在编写一个测试时遇到了很多问题,这个测试在一个屏幕上执行一些操作,而这个屏幕只是偶尔出现 我想点击这个屏幕的一个元素,如果出现,但如果没有出现,我需要继续点击并在下一个屏幕中完成表单 我现在的解决方案很管用,但它真的很难看: 步骤: MyPage实现: def check_and_click_screen1_if_appears Capybara::find_by_id("idOfOneElement", :wait => 2).click r
def check_and_click_screen1_if_appears
Capybara::find_by_id("idOfOneElement", :wait => 2).click
rescue Capybara::ElementNotFound
end
def do_my_operations_in_screen2
Capybara::find_by_id("idOfOtherElement").click
Capybara::fill_in('txtSearch', :with => 'mytext')
end
如果“idOfOneElement”在2秒内出现,单击它并继续执行“check_screen2_elements”,如果没有出现,则测试中不会显示错误,并通过执行“do_my_operations_in_screen2”
工作很好,但我相信水豚可以做得更有效
如果我需要改进我的测试,并且想在可选的“screen1”中填写一些文本框,我的解决方案(带有rescue异常)不起作用
一些帮助
谢谢 而不是使用find或expected,您应该使用Capybaras\u xxx?没有xxx吗?方法(has_css?、has_button?、has_select?、…)返回布尔结果,而不是提高期望值。在你的情况下是这样的
if page.has_css?('#idOfOneElement', wait: 2)
page.find_by_id("idOfOneElement").click
end
谢谢
这是非常有用的!!!!
最终代码:
if Capybara::has_css?('#idOfOneElement', wait: 1)
Capybara::fill_in('idOfOneElement', :with => 'mytext')
Capybara::find_by_id("idOfOneButton").click
end
您是否尝试过使用expect(第页)。使用选择器(“某物”)
?
if Capybara::has_css?('#idOfOneElement', wait: 1)
Capybara::fill_in('idOfOneElement', :with => 'mytext')
Capybara::find_by_id("idOfOneButton").click
end