我在使用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"
非常感谢任何帮助
答案 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
,那么您就知道使用了错误的索引