1

我正在使用基于 Railscasts 的 js 代码向我的页面添加新课程。

使用 Rspec 和 Capybara 进行测试时,如何从动态生成的选择菜单中选择一个选项,该选项具有基于时间的唯一 ID?

我的想法是完成所有选择菜单,并抓住最后一个,但我没有点击任何东西。

Rspec 代码:

        click_link "Edit "
        click_link "Add Another Lesson" #this then uses JS to put another select menu on the screen.
        select("Lesson 2", from: "#{ideally it would find the last select tag here}") #this is what i don't know how to find.

我知道有all 但不确定如何使用 Xpath 来查找最后一个选择标签。

4

2 回答 2

1

Actions#select只能通过名称、id 或标签文本来查找元素。你没有它,所以你应该使用Element#select_option。我不知道任何 CSS 或 XPath 选择器会选择整个页面上的最后一个元素,所以我认为您可以使用:

all('select').last.find(:option, 'Lesson 2').select_option

查找所有选择但只使用最后一个可能看起来有点难看。在另一个元素中选择它可能会更好:

find(some_selector).find('select').find(:option, 'Lesson 2').select_option
于 2013-01-04T19:01:57.193 回答
1

伙计让我走得很远,谢谢@Andrey。

对我有用的是,对于 text_field 输入:

all(:css, '.hearter')[0].set "Just Awesome Man"

对于选择标签:

all(:css, '.js-select')[0].select("1") # "1" was my value

于 2013-04-26T20:06:18.687 回答