2

我正在写一个黄瓜功能是我想删除一个类别,但在我删除它之前,我显示一个模式屏幕询问用户他的构象。微博引导模式黄瓜功能

我正在使用twitter bootstrap并使用它们提供的javscript模式。

但是我被卡住了,所以任何人都可以在右边直接帮我解释一下。 这是我的特点至今:

Scenario: Delete category with articles 
    Given I am logged in as an admin 
    And I have category titled Paints 
    When I go to the list of categories 
    And I push delete button for the Paints category 
    Then I should get a popup to confirm 

我已经实施的必要步骤,功能接受课程的最后一个。 但我不知道如何开始:

我读了一些关于page.driver.browser.switch_to.alert的内容,但现在不要这样做。

有没有人有一些建议?

非常感谢。

+0

我试过这种方法:page.driver.browser.switch_to.alert.accept,但后来我得到没有警报存在(Selenium :: WebDriver :: Error :: NoAlertPresentError) – Niels

+0

我相信tb模式只是一个div ,所以也许在确认模式下验证文本,这不是'正常'js确认 – house9

回答

7

正如你在你的问题中所建议的,你可以通过Selenium Driver访问对话框。我假设你正在使用水豚,所以这里是你如何能定义接受/取消弹出窗口的步骤定义:

Then /^I accept the popup to confirm$/ 
    page.driver.browser.switch_to.alert.accept 
end 

Then /^I cancel the popup to confirm$/ 
page.driver.browser.switch_to.alert.dismiss 
end 

编辑:看来模式其实并不是一个窗口......让我们试试它是这样的:

创建一个辅助函数来检测模态元素大约是:

def find_modal_element 
    wait_until { page.find(modal_element_id).visible? } 
end 

然后让我们改变步骤定义:

Then /^I should see a popup window$/ 
find_modal_element 
page.find(modal_element_id).text.must_match "Whatever you want it to match" 
end 
+0

谢谢小费!我的测试工作就是这样。 – Niels

+0

很高兴帮助:) – Nobita

+1

仍然遇到一些问题,像这样测试它的方式会使我的测试非常不稳定。有时我得到这个错误:元素无法滚动到视图中:...(Selenium :: WebDriver :: Error :: MoveTargetOutOfBoundsError)。任何想法如何让测试更健壮? – Niels