在 python selenium get_attribute('value') 中,当 Web 元素中不存在属性时,不会返回 None

问题描述 投票:0回答:1

我的表单中有一个文本框,我想知道它是否为空。 如果属性不存在,get_attribute() 应该返回 None,但它什么也没有返回,空白、空白区域。 我想检查下面的 Web 元素中是否不存在该属性值。 这是网络元素:

<input type="text" name="newPhone2" size="12" maxlength="10">

我想返回“None”,因为“value”属性不存在。

new_phone2 = self.driver.find_element(By.NAME, "newPhone2")
if new_phone2.get_attribute('value') == None:
 # Do blah blah blah

即使 value 不是 Web 元素中的属性,get_attribute() 也不会返回 None。它什么也没返回... 例如:

print(new_phone2.get_attribute('value')) 

找到该元素,但打印空格而不是 None。我希望它打印 None,所以我可以使用 None 作为我的 if 条件。我什至尝试了空引号作为我的条件,但这不起作用。

为什么它是空白的并且不返回None?如果值存在,则返回该值,但当值不存在时不返回 None。

如果网页元素有值,它将返回该值。 例如,

<input type="text" name="newPhone2" value="123456' size="12" maxlength="10">
print(new_phone2.get_attribute('value')) 

这将打印 123456。但是如果 value 属性不存在,则不会返回 None。

python selenium-webdriver attributes return nonetype
1个回答
0
投票

如果你检查

get_attribute
的返回类型,它会显示
str
所以
if new_phone2.get_attribute('value') == None:
无论如何都不会被评估为 true。

当某个元素不具有您正在搜索的属性时,它将返回一个

""
,可以将其评估为虚假值。

您更新的代码应该是

new_phone2 = self.driver.find_element(By.NAME, "newPhone2")
if not new_phone2.get_attribute('value'):
 # Do blah blah blah

现在,如果您也想将空格视为错误,那么您可以使用它来代替

if not new_phone2.get_attribute('value').strip():
© www.soinside.com 2019 - 2024. All rights reserved.