You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python+Selenium获取元素的aria-disabled属性值?

问题描述

我有一段基于Selenium的代码,能完成Instagram访问、账号登录、用户搜索操作,但始终无法实现查看类名为_aarf的div元素的aria-disabled属性是否为"true"并打印判断结果的需求。目标元素的HTML结构如下:

<div class="_aarf" aria-disabled="true" role="button" tabindex="-1">

现有实现代码如下:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

# 指定chromedriver路径
driver = webdriver.Chrome('C:/Users/me/Desktop/IG_APP/chromedriver.exe')

# 打开Instagram
driver.get("http://www.instagram.com")

# 定位用户名输入框
username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='username']")))
password = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='password']")))

# 输入账号密码
username.clear()
username.send_keys("MYUSERID")
password.clear()
password.send_keys("MYPASSWORD")

# 点击登录按钮
button = WebDriverWait(driver, 2).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']"))).click()

# 处理弹窗
not_now = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//button[contains(text(), "Not Now")]'))).click()
not_now2 = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//button[contains(text(), "Not Now")]'))).click()

import time

# 定位搜索框
searchbox = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@placeholder='Search']")))
searchbox.clear()

# 搜索目标用户
keyword = "@test"
searchbox.send_keys(keyword)

time.sleep(2)
searchbox.send_keys(Keys.ENTER)
time.sleep(2)
searchbox.send_keys(Keys.ENTER)
time.sleep(2)
解决方案

要实现需求,核心是等待目标元素加载完成后,获取其aria-disabled属性值并进行判断。Instagram页面是动态渲染的,建议用WebDriverWait替代time.sleep来等待元素,确保元素已存在于DOM中。

修改后的完整代码如下:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

# 指定chromedriver路径
driver = webdriver.Chrome('C:/Users/me/Desktop/IG_APP/chromedriver.exe')

# 打开Instagram
driver.get("http://www.instagram.com")

# 定位用户名输入框
username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='username']")))
password = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='password']")))

# 输入账号密码
username.clear()
username.send_keys("MYUSERID")
password.clear()
password.send_keys("MYPASSWORD")

# 点击登录按钮
button = WebDriverWait(driver, 2).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']"))).click()

# 处理弹窗
not_now = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//button[contains(text(), "Not Now")]'))).click()
not_now2 = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//button[contains(text(), "Not Now")]'))).click()

# 定位搜索框
searchbox = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@placeholder='Search']")))
searchbox.clear()

# 搜索目标用户
keyword = "@test"
searchbox.send_keys(keyword)

searchbox.send_keys(Keys.ENTER)
searchbox.send_keys(Keys.ENTER)

# 等待目标元素加载完成,获取aria-disabled属性
target_element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, "_aarf"))
)
aria_disabled_value = target_element.get_attribute("aria-disabled")

# 判断并打印结果
is_disabled = aria_disabled_value == "true"
print(f"元素是否被禁用(aria-disabled=true):{is_disabled}")

# 可选:关闭浏览器
# driver.quit()

关键修改说明

  • 替换了部分time.sleep为WebDriverWait,确保页面元素加载完成后再执行操作
  • 使用EC.presence_of_element_located等待目标元素出现在DOM中(如果需要元素可点击,可改用EC.element_to_be_clickable)
  • 通过get_attribute("aria-disabled")获取属性值,注意属性值是字符串类型,需与"true"(小写)做比较
  • 直接打印判断结果,清晰展示元素是否处于禁用状态

内容的提问来源于stack exchange,提问作者Pythoner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:40:50