我有以下HTML代码,并尝试访问" QA1234",这是序列号的值。你能让我知道如何访问这个文本吗?
<div class="dataField">
<div class="dataName">
<span id="langSerialNumber">Serial Number</span>
</div>
<div class="dataValue">QA1234</div>
</div>
<div class="dataField">
<div class="dataName">
<span id="langHardwareRevision">Hardware Revision</span>
</div>
<div class="dataValue">05</div>
</div>
<div class="dataField">
<div class="dataName">
<span id="langManufactureDate">Manufacture Date</span>
</div>
<div class="dataValue">03/03/2011</div>
</div>
答案 0 :(得分:0)
我假设你试图以“序列号”的形式获得“QA1234”文本。如果这是正确的,你基本上需要:
一种方法是获取所有“dataField”div并找到包含span的那个:
parent = browser.divs(class: 'dataField').find { |div| div.span(id: 'langSerialNumber').exists? }
p parent.div(class: 'dataValue').text
#=> "QA1234"
parent = browser.divs(class: 'dataField').find { |div| div.span(id: 'langManufactureDate').exists? }
p parent.div(class: 'dataValue').text
#=> "03/03/2011"
另一种选择是查找序列号范围,然后遍历到父“dataField”div:
parent = browser.span(id: 'langSerialNumber').parent.parent
p parent.div(class: 'dataValue').text
#=> "QA1234"
parent = browser.span(id: 'langManufactureDate').parent.parent
p parent.div(class: 'dataValue').text
#=> "03/03/2011"
我发现第一种方法对更改更加健壮,因为它更灵活地将序列号嵌套在“dataField”div中。但是,对于包含大量字段的页面,可能性能较差。