2012-10-17 160 views
0

我想從一個不斷變化的網站捕獲一段文本。 它看起來像:使用硒從網頁捕獲文本

訂單ID:XXIO-123344-3456

的前綴是恆定的,但數字會改變。我想捕獲這個數字並存儲它。我已經嘗試storeTextPresent與正則表達式regexp:Email.*@.*com。它確實會給我一個但它不會返回我的價值。當然storeTextPresent應該只返回。那麼現在我怎樣才能捕捉確切的價值?

下面是網頁部分的屏幕截圖。無法顯示整個頁面,所以很抱歉。

enter image description here

所以任何想法的傢伙?

我將這些測試導出到python遠程控制之後。所以python特定的代碼更受歡迎。

+0

你能顯示你實際嘗試過的代碼嗎? –

+0

我沒有代碼.....考慮你訪問一個網頁。你啓動硒IDE。開始錄製。您右鍵單擊所需的頁面文本並選擇「storeTextPresent」。那就是我想要做的。好吧,試着在這個頁面上捕獲文本「瀏覽 8次」。你可以在右上角看到它。你想捕捉「8次」。你是怎麼做到的? –

回答

1

assertText使用正則表達式regexp:^XXIO-.+可以解決此問題。結合使用您需要驗證的元素ID來嘗試此操作。

+1

這不會給出想要的結果,因爲它會返回一個布爾值,而不是arindam正在尋找的實際文本。 –

0

感謝您的想法,但我無法找到文本的位置。 這是我使用螢火蟲捕獲的代碼。

<div class="chkOutBox"> 
<h2 id="tnq" class="marb10">Order Details</h2> 
<div class="ordRevAddressArea"> 
<div class="ordRevDelSlotArea"> 
<div class="clear"></div> 
<div class="bFont">Order ID:&nbsp; BBO-72262-171012</div> 
<div class="scartPgHdr"> 
<h3 class="catHdr">Fruits &amp; Vegetables</h3> 

在這裏,我們擷取的ID號(6號線)......可能有人能告訴我如何從上面的代碼 找出可能的定位器爲這個....由方式我通過捕獲具有訂單ID的頁面的URL來解決我的問題。我使用正則表達式來分隔訂單ID,並且這就是.......它只是一個臨時解決方案.......

+0

你甚至可以使用CSS定位器。很難說什麼是最好的,因爲html標記不能傳達很多語義含義。 CSS類看起來像是基於視覺樣式而不是語義。你可以試試'#tnq .bFont'。更好的做法是添加使用語義類名稱。另外,我可以建議,不要添加額外的信息作爲答案,您應該編輯您的原始問題並在此處添加此信息。 –

+0

好建議......我一定會練習......... –

0

Python代碼。

def get_order_id(driver): 
    """ Gets the order id, given an Order Details page. """ 
    try: 
     bFonts = driver.find_element_by_class_name("bFont") 
     for element in bFonts: 
      if "Order ID" in element.text: 
       return element.text.split()[-1] 
    except NoSuchElementException: 
     return None 

這裏假設類名bFont從不改變。如果確實如此,您可以重寫它以搜索div標記。它還假定將找到「訂單ID」。