2015-07-11 30 views
0

我有一个XML文档:添加引入nokogiri解析结果变量

<cred> 
<login>Tove</login> 
<pass>Jani</pass> 
</cred> 

我的代码是:

require 'nokogiri' 
require 'selwet' 

context "parse xml" do doc = Nokogiri::XML(File.open("test.xml")) 
doc.xpath("cred/login").each do 

|char_element| 

puts char_element.text 

end 

should "check" do 
Unit.go_to "http://www.ya.ru/" 
Unit.click '.b-inline' 
Unit.fill '[name="login"]', @login 
end 

当我运行我的测试,我得到:

Tove 
0 

但我想要将解析结果插入@login。我怎样才能得到解析结果的变量?是否需要将XML中的loginpass值插入网页中的字段?

回答

0

我会使用这样得到的数值:

require 'nokogiri' 

doc = Nokogiri::XML(<<EOT) 
<cred> 
<login>Tove</login> 
<pass>Jani</pass> 
</cred> 
EOT 

login = doc.at('login').text # => "Tove" 
pass = doc.at('pass').text # => "Jani" 

引入nokogiri使得它可以很方便的访问值使用CSS,所以尽可能使用它来提高可读性。同样的事情可以使用XPath来完成:

login = doc.at('//login').text # => "Tove" 
pass = doc.at('//pass').text # => "Jani" 

而且不必增加//两次完成同样的事情通常是无用功。

重要的部分是at,它返回目标的第一个匹配项。 at允许我们使用CSS或XPath,但CSS通常在视觉上较差。

1

您可以从XML获得登录的价值与

@login = doc.xpath('//cred/login').text