is_enabled:selenium中判断元素是否可以使用;is_selected()/is_displayed()

项目中碰到的标签中的带disabled的情况,比如:

上传多个音乐后,还未选择其中任意一项,此时的select按钮置灰不可用,

如图:

html如下:

<button type="button" class="ant-btn" disabled=""><span>Select</span></button>

 

选中之后,按钮变蓝可用,disabled=""属性自动隐藏

<button type="button" class="ant-btn"><span>Select</span></button>

那么前期我们需要验证按钮是否不可用,选中之后还要验证按钮是否可用

ele = driver.find_element_by_css_selector('ant-btn')  # 定位select按钮

ele.is_enabled()  # 第一次验证返回结果:false

driver.find_element_by_css_selector('xxx').click  # 假设选中某一项音乐

ele.is_enabled()  # 再次验证返回结果:true
判断元素是否被选中:is_selected()
比如checkbox和radio元素,可以通过直接点击或者发送空格进行选中或者反选
element.is_selected()  # 判断是否被选中

判断元素是否显示:is_displayed()
判断元素是否被使用:is_enabled()

 

在编程,特别是使用Selenium这样的Web自动化测试框架时,"Failed to click element: 'NoneType' object has no attribute 'is_displayed'" 这个错误通常是由于你尝试对一个None对象(即NoneType)执行方法(如`is_displayed()`)所导致的。 当你调用`is_displayed()`这样的属性或方法,它通常是在检查网页上的某个元素是否可见。如果代码找不到该元素,或者元素还未加载完成,Selenium会返回None。然而,None对象并没有`is_displayed()`这样的属性,所以当你试图点击它时,就会抛出这个错误。 解决这个问题的方法通常包括: 1. **确保元素存在**:在点击之前,先检查元素是否存在,可以使用`element.is_displayed()`或`element.exists()`来验证。 ```python element = driver.find_element_by_xpath(...) if element is not None and element.is_displayed(): element.click() ``` 2. **等待加载**:如果你知道元素会在页面上动态加载,添加适当的等待时间,比如`WebDriverWait`,直到元素存在并且可交互。 ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) # 设置超时时间 element = wait.until(EC.presence_of_element_located((By.XPATH, ...))) if element.is_displayed(): element.click() ``` 3. **处理异常**:使用`try-except`结构捕获并处理可能出现的异常。 ```python try: element = driver.find_element_by_xpath(...) element.click() except AttributeError: print("Element not found or is not displayed.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值