Jon*_*ger 66 cucumber capybara
我正在写一个黄瓜测试,我想在一个元素中获取HTML.
例如:
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
Run Code Online (Sandbox Code Playgroud)
有人知道怎么做吗?
lli*_*err 55
您可以调用HTML DOM innerHTML属性:
find('//tr[2]//td[7]')['innerHTML']
Run Code Online (Sandbox Code Playgroud)
适用于任何浏览器或驱动程序.您可以查看w3schools上的所有可用属性
Eri*_* Hu 25
这篇文章很老,但我觉得如果你还需要这个,我找到了一个方法.
要从Capybara元素访问Nokogiri节点(使用Capybara 1.0.0beta1,Nokogiri 1.4.4)试试这个:
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>"
Run Code Online (Sandbox Code Playgroud)
最后一部分可能因您而异,但您应该能够在该节点变量中的某处找到HTML
Ste*_*eve 16
在我的环境中,find返回一个Capybara :: Element - 响应上面提到的Eric Hu的native方法,它返回一个Selenium :: WebDriver :: Element(对我来说).然后:文本获取内容,因此它可以像下面这样简单:
results = find(:xpath, "//td[@id='#{cell_id}']")
contents = results.native.text
Run Code Online (Sandbox Code Playgroud)
如果你正在寻找表格单元格的内容.Capybara :: Element上没有content,inner_html,inner_text或node方法.假设人们不仅仅是在制造东西,也许你会从找到的东西中找到不同的东西,这取决于你用Capybara装载的其他东西.
看起来你可以做到(node).native.inner_html获取HTML内容,例如使用这样的HTML:
<div><strong>Some</strong> HTML</div>
Run Code Online (Sandbox Code Playgroud)
您可以执行以下操作:
find('div').native.inner_html
=> '<strong>Some</strong> HTML'
Run Code Online (Sandbox Code Playgroud)
小智 5
我遇到了与Cyril Duchon-Doris相同的问题,根据https://github.com/teampoltergeist/poltergeist/issues/629,访问Capybara :: Poltergeist :: Node的HTML的方法是通过outerHTML属性,例如:
find('//tr[2]//td[7]')['outerHTML']
Run Code Online (Sandbox Code Playgroud)
好吧,Capybara 使用 Nokogiri 来解析,所以这个页面可能合适:
http://nokogiri.org/Nokogiri/XML/Node.html
我相信content这就是您正在寻找的方法。
| 归档时间: |
|
| 查看次数: |
43430 次 |
| 最近记录: |