尝试在列表中每个WebElement的末尾添加后缀(字符串)

时间:2020-05-21 16:22:07

标签: python selenium

我目前正在尝试根据其后的单词来验证是否选中了某些复选框。如果该行包含单词“ 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

1 个答案:

答案 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"