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