为什么我不能在selenium的列表中使用send_keys()作为元素

时间:2017-09-29 23:26:28

标签: python google-chrome selenium webdriver

我在使用chrome webdriver的python中使用Selenium。我想将密钥发送到某些输入字段,如果我按照它的名字或ID找到每个单独的项目,我就可以这样做。但是我想做更多的事情:

fields = driver.find_elements_by_class_name("input")
fields[0].send_keys("foo")

但是,这给了我:

"selenium.common.exceptions.WebDriverException: Message: unknown error: 
 cannot focus element"

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

所以当你使用find_element_by_name

driver.find_element_by_name("xyz").send_keys("foo")

考虑以下html

<input class="input" type=hidden name=iamhidden>
<input class="input" type=text name=xyz>

现在如果我使用

fields = driver.find_elements_by_class_name("input")
fields[0].send_keys("foo")

这并不保证我获得的第一个元素与<input class="input" type=text name=xyz>相同,因为现在我正在创建一个返回多个元素的泛型查询。如果你真的想测试它,请使用

fields = driver.find_elements_by_class_name("input")
for field in fields:
    try:
       field.send_keys("foo")
    except:
       pass

现在,如果元素为您感兴趣的文本框设置foo,那么您就知道使用了错误的索引