6

私のWebページには次のコードがあります。

<div id="" class="user_acc_setails">
<ul id="accDtlUL">
<li>First Name: <span id="f_name">Anuja</span></li>

ページが読み込まれるまで、Sapnの値は設定されていません。値の設定には非常に短い時間がかかります。私は待って、Pythonファイルでその値を取得したいと考えています。

現在、次のコードを使用しています。

element = context.browser.find_element_by_id('f_name')
assert element.text == 'Anuja'

しかし、それは私にAssetionErrorを与えます。どうすればこれを解決できますか?

ありがとう

4

5 に答える 5

6

この場合の正しい方法は、明示的な待機を使用することです (そこの Python コードを参照してください)。だからあなたは次のようなものが必要です

from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
element = wait.until(EC.text_to_be_present_in_element((By.Id,'f_name'), 'Anuja'))
于 2013-09-04T09:02:59.327 に答える
4

これを行う関数を次に示します。

def wait_on_element_text(self, by_type, element, text):
        WebDriverWait(self.driver, 10).until(
            ec.text_to_be_present_in_element(
                (by_type, element), text)
        )

by_type を By.XPATH や By.CSS_SELECTOR などに置き換えます。要素は要素パスに置き換えられます - 要素 xpath、一意のセレクター、id など。テキストは要素のテキスト (要素に関連付けられた文字列など) に置き換えられます。

于 2015-10-01T14:12:33.567 に答える
0

解決策を見つけました。これは正しい方法ではないかもしれません。私が行ったことは、要素を見つける前にPythonスリープを使用し、その値をアサートすることです。

import time
...

time.sleep(3)
element = context.browser.find_element_by_id('f_name')
assert element.text == 'Anuja'

その後、それは完全に機能しています。

于 2013-09-04T07:49:23.763 に答える