如何结合使用Capybara查找和内部?

时间:2012-12-14 19:50:17

标签: ruby-on-rails ruby rspec tdd capybara

以下按预期方式工作:

 within('h2', text: 'foo') do
      should have_content 'bar'
 end

我正在尝试使用find(:xpath, '..')

在父元素中进行检查

找到元素后,如何应用.find(:xpath, '..'),然后检查 元素中的内容?

3 个答案:

答案 0 :(得分:18)

当您在within中使用XPath定位符时,它应该以{{1​​}}开头(如果它不是以.开头,则搜索不在.内但在整个文件)。

E.g:

.myclass

或:

within('.myclass') do
  find(:xpath, './div')
end

来自@ BSeven的答案的代码可以写成一行:

find('.myclass').find(:xpath, './div')

expect(find("//h2[text()='foo']/..")).to have_text('bar')

答案 1 :(得分:4)

以下是一种方法:

 within('h2', text: 'foo') do
   within(:xpath, '..') do
     should have_content 'bar'
   end       
 end

答案 2 :(得分:4)

在2.11之后使用Rspec的新语法,它应该是;

public class NewsModel {

    String headlines;
    String weblink;
    String imagelink;




    public String getHeadlines() {
        return headlines;
    }

    public void setHeadlines(String headlines) {
        this.headlines = headlines;
    }

    public String getWeblink() {
        return weblink;
    }

    public void setWeblink(String weblink) {
        this.weblink = weblink;
    }

    public String getImagelink() {
        return imagelink;
    }

    public void setImagelink(String imagelink) {
        this.imagelink = imagelink;
    }

    public String getShortnews() {
        return shortnews;
    }

    public void setShortnews(String shortnews) {
        this.shortnews = shortnews;
    }

    public String getSource() {
        return source;
    }

    public void setSource(String source) {
        this.source = source;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    String shortnews;
    String source;
    String date;
}