我需要获取所选 HTML 选项的值:
<select name="DisplayCurrency" id="DisplayCurrency" >
<option value="GBP" >Pounds Sterling</option>
<option value="EUR" selected="selected" >Euros</option>
<option value="CHF" >Swiss Francs</option>
<option value="DKK" >Danish Krona</option>
<option value="CSK" >Czech Krowns</option>
<option value="HUF" >Hungarian Forints</option>
<option value="PLN" >Polish Zloty</option>
</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我用 Nokogiri 试过这个,但它不起作用:
page.search('//select[@id="DisplayCurrency"]/option[@selected=selected]').attr('value')
Run Code Online (Sandbox Code Playgroud)
这对我有用,即使标记无效:
require 'nokogiri'
doc = Nokogiri::XML <<ENDXML
<select name="DisplayCurrency" id="DisplayCurrency" >
<option value="GBP" >Pounds Sterling</option>
<option value="EUR" selected="selected" >Euros</option>
<option value="CHF" >Swiss Francs</option>
<option value="DKK" >Danish Krona</option>
<option value="CSK" >Czech Krowns</option>
<option value="HUF" >Hungarian Forints</option>
<option value="PLN" >Polish Zloty</option>
</option>
</select>
ENDXML
puts doc.css('#DisplayCurrency option[@selected="selected"]').attr('value')
#=> EUR
puts doc.at_xpath('//select[@id="DisplayCurrency"]/option[@selected="selected"]').attr('value')
#=> EUR
puts doc.at_xpath('//*[@id="DisplayCurrency"]/option[@selected="selected"]/@value').value
#=> EUR
p RUBY_VERSION, Nokogiri::VERSION
#=> "1.9.2"
#=> "1.4.4"
Run Code Online (Sandbox Code Playgroud)