2016-06-23 10 views
1

テーブルセルのテキストを印刷しようとしていますが、何も印刷されません。要素を識別していますが、テキストの位置を特定できないようです。Selenium Pythonを使用してテーブル(td)からテキストを読み取った後に何も印刷されない

HTMLは次のようになります。それは見つけ

Balance=driver.find_element_by_id("testBalance") 
print (Balance.text) 

<tr style="font-weight: 600;"> 
    <td> 
     " 
    Available Balance 
             " 
    </td> 
    <td id="testBalance" class="text-right ng-binding" style="font-weight: 600;"> 

                 664,265.314 
    </td>               

私は実行して、 "664,256.314" の値を読み取る(および印刷)しようとしています要素は印刷されますが、何も印刷されません。誰がなぜこれが起こっているのか知っていますか?

+0

は大会のPythonの変数によってで開始する必要があります小文字。問題については、あなたが提供した 'html'を使って試してみました。それは私のためにうまくいきました。 – RemcoW

+0

まだ印刷することができません。私のhtmlの例に二重引用符を入れるのを忘れてしまった(私の例ではAvailable Balanceと同じように見える - "664,265.314")。二重引用符と二重引用符と数字の間のスペースは違いますか? – ChrisG29

+0

私はそれを疑うあなたは 'get_attribute( 'textContent')'を使って試して、それがあなたに何を与えるのかを見てみることができます。 – RemcoW

答えて

1

私はそれが単なるタイミングの問題だと思います。残高は値を取得した瞬間に設定/更新されていません。存在するために、テキストを待つExplicit Waitを追加します。

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

class wait_for_any_text(object): 
    def __init__(self, locator, text_): 
     self.locator = locator 
     self.text = text_ 

    def __call__(self, driver): 
     try: 
      element_text = EC._find_element(driver, self.locator).text 
      return element_text.strip() 
     except StaleElementReferenceException: 
      return False 

wait = WebDriverWait(driver, 10) 
balance = wait.until(wait_for_any_text((By.ID, "testBalance"))) 

print(balance.text) 
0

(RemcoWのおかげで)

プリント(Balance.get_attribute( 'のTextContent'))

関連する問題