Selenium Python:如何等待元素类匹配且样式宽度为100%?
实现方法
当然可以实现,你可以通过两种方式等待进度条宽度达到100%:
方法一:直接在XPath中匹配样式属性
利用XPath的属性匹配逻辑,直接定位到宽度为100%的进度条元素,结合WebDriverWait等待元素出现:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By WebDriverWait(driver, 20).until( EC.presence_of_element_located( (By.XPATH, "//div[@class='bar' and contains(@style, 'width: 100%')]") ) )
注意:如果页面中进度条的
style属性写法是width:100%(无空格),可以把XPath里的匹配内容改成contains(@style, 'width:100%');如果担心空格格式不统一,也可以用normalize-space处理属性值://div[@class='bar' and contains(normalize-space(@style), 'width: 100%')]
方法二:自定义等待条件(更可靠)
如果进度条的宽度是通过脚本动态计算、未直接写在style属性里,推荐用自定义等待逻辑,获取元素实际渲染的宽度进行判断:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By def progress_bar_complete(driver): progress_bar = driver.find_element(By.XPATH, "//div[@class='bar']") # 获取元素实际渲染的宽度值 current_width = progress_bar.value_of_css_property('width') # 判断是否达到100% return current_width == '100%' # 等待进度条完成 WebDriverWait(driver, 20).until(progress_bar_complete)
这种方式能避免因style属性写法差异导致的匹配失败,更适配动态渲染的进度条场景。
内容的提问来源于stack exchange,提问作者PRR
相关产品推荐
相关产品推荐

