问题
我正在尝试计算网站显示价格的不同货币的数量。
该网站的主页允许用户从下拉列表中选择一种货币。
我试图找到一个 XPath 表达式来计算下拉列表中的不同货币。
该列表如下所示:
列表中的前四种货币是用户最常选择的货币。
还会显示按货币代码排序的完整货币列表。完整列表包含前四种货币的重复项。
通过在下拉列表中放置一个禁用的空白选项,“流行”列表和“完整”列表在视觉上是分开的。
主页上用于创建列表的 HTML 如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<select id="selCurrency" tabindex="122">
<option value="GBP" selected="selected">Select your currency</option>
<option value="GBP">GBP - £</option>
<option value="EUR">EUR - €</option>
<option value="PLN">PLN - zł</option>
<option value="USD">USD - $</option>
<option value="" disabled="disabled"/>
<option value="AED">AED - د.إ.</option>
<option value="AFN">AFN</option>
<option value="ARS">ARS - $</option>
<option value="AUD">AUD - $</option>
<option value="BDT">BDT</option>
<option value="BGN">BGN - лв.</option>
<option value="BOB">BOB - Bs.</option>
<!-- ... -->
</select>
为简洁起见,我删除了屏幕截图中不可见的元素。
尝试的解决方案
我的解决方案的想法是只选择空白分隔符之后的所有节点并将它们计数。
此 XPath 表达式仅选择分隔符:
//*[@id="selCurrency"]/option[@value=""]
根据XPath 轴上的 w3schools 页面,我可以使用以下兄弟轴来选择当前节点之后的所有兄弟姐妹。
按照示例,我尝试了以下表达式:
//*[@id="selCurrency"]/following-sibling::option[@value=""]
但这要么不返回任何内容,要么是非法语法。我不确定是哪个。
如何选择完整币种列表的所有节点,然后进行统计?