2014-06-20 45 views
0

我需要存儲兩個文本值,並把它們作爲數字減法:硒IDE店字符串數

<a href="..."><span id="user-account-balance">593 455,07</span> $</a> 

<a href="..."><span id="user-account-balance-points">12454</span> P</a> 

我需要減去這兩個值,但它不爲我工作:

<tr> 
    <td>storeText</td> 
    <td>//a/span[@id='user-account-balance']</td> 
    <td>a</td> 
</tr> 
<tr> 
    <td>storeEval</td> 
    <td>storedVars['a'].match(/^\d+/);</td> 
    <td>one</td> 
</tr> 
<tr> 
    <td>storeText</td> 
    <td>//span[@id='user-account-balance-points']</td> 
    <td>c</td> 
</tr> 
<tr> 
    <td>storeEval</td> 
    <td>storedVars['c'].match(/^\d+/);</td> 
    <td>two</td> 
</tr> 
<tr> 
    <td>store</td> 
    <td>javascript{storedVars['one']+storedVars['two']}</td> 
    <td>r</td> 
</tr> 
<tr> 
    <td>echo</td> 
    <td>${r}</td> 
    <td></td> 
</tr> 

結果是[資訊]迴音:59312454.因此有兩個問題,第一個數字是空間後切出來,它甚至不減去反正

回答

0

因此,首先,你的正則表達式

/^\d+/ 

只會捕獲字符串最開始處不間斷的數字序列。您需要修改第一個.match()正則表達式來處理帶空格的文本數字,千位分隔符和逗號作爲小數點分隔符。 Documentation on match說,一個// g ^正則表達式會返回一個字符串數組,所以你大概可以做這樣的事情

storedVars['a'].match(/\d+(,\d\d)?/g).join('').replace(',', '.'); 

捕捉貨幣字符串並將其存儲在一個字符串到數字轉換的方式。然後你最後JavaScript表達式會像

storeEval 
parseFloat(storedVars['one']) + parseInt(storedVars['two']) 
0

這爲我工作的時候總被存儲爲$ XXX,XXX.XX:

<tr> 
    <td>storeText</td> 
    <td>xpath=.//*[@id='table-header']/tbody/tr[1]/td[5]/b</td> 
    <td>Total1</td> 
</tr> 
<tr> 
    <td>storeEval</td> 
    <td>storedVars['Total'].replace(',', '').replace('$', '');</td> 
    <td>Amount1</td> 
</tr>