使Selenium等待Web元素内的文本更改

ecbunoof  于 2023-01-13  发布在  其他
关注(0)|答案(2)|浏览(148)

我正在使用Selenium自动上传一个excel文件到一个网站。为了确保上传在继续之前完成,我使用了time.sleep(60),但是我想让代码更聪明一点。
在upload字段之后有一个label元素。

<label id="upload_status">only .xlsx files will be accepted.</label>

此标签在上载完成后更改为

<label id="upload_status">100 entries were detected.</label>

我可以使用标签内的文本来判断上传是否已完成吗?

hk8txs48

hk8txs481#

可以,您可以使用text_to_be_present_in_elementexpected_conditions
这应该行得通:

WebDriverWait(driver, 100).until(EC.text_to_be_present_in_element((By.ID, "upload_status"), "entries were detected"))

应在以下位置使用这些导入:

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

lnlaulya2#

首先按ID查找 label 元素,然后检查要显示(不显示)的关键字:

from selenium import webdriver
from selenium.webdriver.common.by import By
...
el = driver.find_element(By.ID, 'upload_status')
while 'entries were detected' not in el.get_attribute('innerHTML'):
    time.sleep(1)
...

相关问题