我目前正在尝试根据其后的单词来验证是否选中了某些复选框。如果该行包含单词“ Elephant”,它将返回到该行的开头并找到与之关联的复选框。我的问题是有多行包含大象,所以我需要找到所有这些元素。
我无法将'is_selected()'
粘贴到driver.find_elements_by_xpath("//*[contains(text(),'Elephant')]/preceding::td[1]/span/input[1]")
的末尾
因为出现此错误:
AttributeError: 'list' object has no attribute '.is_selected'
所以我得出的结论是,要解决此问题,我需要在每个列表项的末尾附加.is_selected()
,然后再从那里进行验证。
这是我尝试过的:
CheckBoxes = driver.find_elements_by_xpath("//*[contains(text(),'Elephant')]/preceding::td[1]/span/input[1]")
Checkboxes = [x + ".is_selected" for x in CheckBoxes]
print(Checkboxes)
运行上述命令时出现的错误是:
TypeError: unsupported operand type(s) for +: 'WebElement' and 'str'
此外,如果有人能比将这些元素转换为列表更好的方法,那么我很乐意为您提供一些建议
更新:
这是我所使用的,它不能回答原始问题,但可以解决我的问题。
try:
for element in driver.find_elements_by_xpath("//*[contains(text(),'Elephant')]/preceding::td[1]/span/input[1]"):
On = element.is_selected()
if On is True:
print("Elephant: Checked")
print("\n")
else:
print("Elephant: UNCHECKED")
print("\n")
except:
pass
答案 0 :(得分:1)
如果我的以下建议不能解决您的问题,请分享dom的快照
首先,您正在使用find_elements返回元素列表,这就是is_selected()失败并出现以下错误的原因
AttributeError: 'list' object has no attribute '.is_selected
假设您已在浏览器中验证了xpath,并且能够指向所有期望的字段,那么下面的代码。
可以说所有复选框都在CheckBoxes变量中
for checkbox in CheckBoxes:
assert checkbox.is_selected(), "checkbox is with text elephant is not selected"