将Nokogiri解析结果添加到变量中

时间:2015-07-11 06:31:27

标签: ruby nokogiri web-testing

我有一个XML文档:

<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值插入网页中的字段?

1 个答案:

答案 0 :(得分: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通常不那么吵。