从动态添加的JS capybara中选择一个带有基于时间的ID的选项

时间:2013-01-04 17:12:38

标签: rspec capybara

我正在使用基于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查找最后一个选择标记。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

Dude让我走了很远,感谢@Andrey。

对于我来说,对于text_field输入有用:

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

用于选择标签:

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