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



我有一个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值到web页面中的字段吗?

您可以使用

从XML中获取login的值
@login = doc.xpath('//cred/login').text

我将使用这样的东西来获取值:

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通常在视觉上较少干扰。

相关内容

  • 没有找到相关文章

最新更新