簡體   English   中英

selenium find_elements_by_xpath .get_attribute 沒有顯示正確的值

[英]selenium find_elements_by_xpath .get_attribute does not show proper value

我使用以下代碼:

    driver = webdriver.Chrome(executable_path = r'G:\Program Files\chromedriver')
    
    driver.get("https://trader.degiro.nl/login/nl?_ga=2.48166567.1674906184.1604234065-1030449807.1604234065#/login")
    
    driver.implicitly_wait(2)
    
    username = driver.find_element_by_id("username")
    username.clear()
    username.send_keys("not actual info")
    
    password = driver.find_element_by_name("password")
    password.clear()
    password.send_keys("not actual info")
    
    
    driver.find_element_by_name("loginButtonUniversal").click()
    

    #top nav elements
    elems = driver.find_elements_by_xpath("/html/body/div[1]/div/div[2]/div[1]/div/div/button/span[1]")
    
    for e in elems:
        print(e.get_attribute('innerHTML'))

要訪問此元素:

<span data-id="totalPortfolio" data-field="total" 
class="uJDZaBS4 " data-positive="true" 
title="22.014,54">€&nbsp;22.014,54</span>

但它打印: €&nbsp;—

雖然我希望它打印實際存在的內容: €&nbsp;22.014,54

所以它將值“22.014,54”變成“-”。

如何獲得原始值而不是“-”?

單擊登錄按鈕后,您必須等待頁面加載。 您可以使用time.sleep來做到這一點:

driver.find_element_by_name("loginButtonUniversal").click()
time.sleep(3)
elems = driver.find_elements_by_xpath("/html/body/div[1]/div/div[2]/div[1]/div/div/button/span[1]")

但是使用time.sleep並不是一個好的做法。 相反,我建議您使用WebDriverWait 以下是您如何使用它:

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

driver.find_element_by_name("loginButtonUniversal").click()

elems = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, '/html/body/div[1]/div/div[2]/div[1]/div/div/button/span[1]'))) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM