首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Capybara获取元素中的HTML?

如何使用Capybara获取元素中的HTML?
EN

Stack Overflow用户
提问于 2010-11-02 02:37:36
回答 9查看 49.5K关注 0票数 75

我正在编写一个cucumber测试,希望在其中获得元素中的HTML。

例如:

代码语言:javascript
复制
within 'table' do
  # this works
  find('//tr[2]//td[7]').text.should == "these are the comments" 

  # I want something like this (there is no "html" method)
  find('//tr[2]//td[7]').html.should == "these are the <b>comments</b>" 
end

有人知道怎么做吗?

EN

回答 9

Stack Overflow用户

发布于 2014-05-19 03:30:38

您可以调用HTML innerHTML属性:

代码语言:javascript
复制
find('//tr[2]//td[7]')['innerHTML']

应该适用于任何浏览器或驱动程序。您可以检查w3schools上的所有可用属性

票数 68
EN

Stack Overflow用户

发布于 2011-06-07 09:33:13

这篇文章很旧了,但我想我找到了一个方法,如果你还需要这篇文章的话。

要从Capybara元素访问Nokogiri节点(使用Capybara 1.0.0beta1,Nokogiri 1.4.4),请尝试执行以下操作:

代码语言:javascript
复制
elem = find('//tr[2]//td[10]')
node = elem.native
#This will give you a Nokogiri XML element

node.children[1].attributes["href"].value.should == "these are the <b>comments</b>"

最后一部分可能对您有所不同,但您应该能够在该节点变量中的某处找到HTML

票数 26
EN

Stack Overflow用户

发布于 2013-03-16 02:11:04

在我的环境中,find返回一个Capybara::Element,它响应Eric Hu上面提到的:native方法,它返回Selenium::WebDriver::Element (对我来说)。然后:text获取内容,所以它可以像下面这样简单:

代码语言:javascript
复制
results = find(:xpath, "//td[@id='#{cell_id}']")
contents = results.native.text

如果您正在查找表格单元格的内容。Capybara::元素上没有content、inner_html、inner_text或node方法。假设人们不是在胡编乱造,也许你会从find中得到一些不同的东西,这取决于你在Capybara中加载的其他东西。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4071937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档