我试图使用函数scrapeAccCash来计算帐户价值和现金。但是,它没有检测到用HTML代码编写的文本。有什么问题吗?此代码是一个最小可复制的示例。
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time
def login():
driver.get(r'https://www.investopedia.com/simulator/home.aspx')
driver.implicitly_wait(10)
driver.find_element(By.ID, 'username').send_keys('garewof922@sofrge.com')
time.sleep(0.5)
driver.find_element(By.ID, 'password').send_keys('Epefx8yGqFzSZL/')
time.sleep(0.5)
driver.find_element(By.ID, 'login').click()
try:
driver.find_element(By.XPATH, '//a[@class="text-h6 white--text pl-8 pr-8 v-tab"]').click()
except:
login()
def scrapeAccCash():
account = driver.find_element(By.XPATH, '//div[@data-cy="account-value"]').text
cash = driver.find_element(By.XPATH, '//div[@data-cy="cash"]').text
print(account, ", ", cash)
return float(account), float(cash)
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
login()
acc, cash = scrapeAccCash()发布于 2022-04-06 19:37:09
要将文本作为帐户价值和现金进行刮取,您需要为元素的WebDriverWait引入visibility_of_element_located(),并且可以使用以下定位器策略
打印( 20).until(EC.visibility_of_element_located((By.XPATH,"//div@data-cy='account-value-text'"))).text),驱动程序,WebDriverWait)
打印( 20).until(EC.visibility_of_element_located((By.XPATH,"//div@data-cy='cash-text'"))).text),驱动程序,WebDriverWait)
从selenium.webdriver.support.ui导入WebDriverWait从selenium.webdriver.common.by导入从selenium.webdriver.support导入expected_conditions作为EC
Outro:在使用WebDriverWait时,需要完全禁用,因为将显式等待和隐式等待混合在一起将导致意外的后果,即即使元素可用或条件为真,也会导致最长时间的等待。警告:不要混合隐式和显式等待。这样做会导致不可预测的等待时间。例如,设置10秒的隐式等待和15秒的显式等待可能导致20秒后发生超时。
https://stackoverflow.com/questions/71772417
复制相似问题