Selenium中get_attribute('value')未返回None问题咨询
问题解答
这是浏览器DOM的默认行为导致的,和Selenium无关:
对于
<input>这类表单元素,即使HTML源码里没有写value属性,浏览器在渲染DOM时也会自动为该元素添加value属性,并设置默认值为空字符串。所以你用get_attribute('value')拿到的是DOM层面的属性值,自然是空串而非None。如果你要严格区分「HTML中完全没有
value属性」和「value属性存在但值为空」这两种情况,不能直接用get_attribute,得调用浏览器原生的DOM方法来判断,比如用execute_script执行hasAttribute:new_phone2 = self.driver.find_element(By.NAME, "newPhone2") # 判断HTML中是否存在value属性 has_value_attr = new_phone2.execute_script("return this.hasAttribute('value');") if not has_value_attr: # HTML里没有value属性的逻辑 print("元素无value属性") elif new_phone2.get_attribute('value') == '': # HTML里有value属性但值为空的逻辑 print("value属性为空串")另外你提到「空字符串判断也无效」,大概率是输入框里有不可见的空白字符(比如空格、换行),可以先做去除空白的处理再判断:
phone_val = new_phone2.get_attribute('value').strip() if not phone_val: # 输入框内容为空(包括空串、全空格等情况) pass
内容的提问来源于stack exchange,提问作者charm2023
相关产品推荐
相关产品推荐

