Selenium定位元素后get_attribute('title')返回空值求助
问题描述
HTML代码
<input id="arid_WIN_0_7" type="text" class="text " readonly="" style="top: 0px; left: 0px; width: 122px; height: 21px; background-color: rgb(222, 224, 224);" title="Succès">
执行代码
browser.switch_to.window(browser.window_handles[-1]) element = WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.ID,"arid_WIN_0_7"))) title = element.get_attribute('title') print(f"Intervention : {title}")
问题现象
通过ID或Type能成功定位元素,但调用get_attribute('title')时返回空值。
解决方法
- 等待元素完全可见:
presence_of_element_located仅确保元素存在于DOM中,不保证属性已加载完成。替换为visibility_of_element_located等待元素可见,确保属性渲染完毕:element = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.ID,"arid_WIN_0_7"))) - 用JS直接读取属性:绕过WebDriver的属性获取逻辑,通过JavaScript直接读取DOM元素的title属性:
title = browser.execute_script('return document.getElementById("arid_WIN_0_7").title;') - 等待属性加载完成:如果title是JS动态设置的,自定义等待条件直到属性非空:
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait def has_valid_title(driver): elem = driver.find_element(By.ID, "arid_WIN_0_7") title_val = elem.get_attribute('title') return title_val is not None and title_val != '' WebDriverWait(browser, 20).until(has_valid_title) title = browser.find_element(By.ID, "arid_WIN_0_7").get_attribute('title') - 检查元素唯一性:页面可能存在重复ID的元素,导致定位到了无title属性的元素。验证元素列表并选择目标元素:
elements = browser.find_elements(By.ID,"arid_WIN_0_7") print(f"找到{len(elements)}个同ID元素") # 取第一个(或对应索引的)元素获取title title = elements[0].get_attribute('title')
内容的提问来源于stack exchange,提问作者Erhan
相关产品推荐
相关产品推荐

