将 Nokogiri 解析结果添加到变量
Add Nokogiri parse result to variable
我有一个 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 中的 login
和 pass
值插入网页中的字段?
您可以通过
从您的 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
, which returns the first occurrence of the target. at
允许我们使用 CSS 或 XPath,但 CSS 通常在视觉上不那么嘈杂。
我有一个 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 中的 login
和 pass
值插入网页中的字段?
您可以通过
从您的 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
, which returns the first occurrence of the target. at
允许我们使用 CSS 或 XPath,但 CSS 通常在视觉上不那么嘈杂。