我想使用Selenium python发送'username',用于以下html:
<div class="entryforms-elements">
<input id="entryforms-control-element" class="entryforms-element-text" type="text" autocomplete="off"></input>
</div>
但以下方法均无效:
browser.find_element_by_xpath('//input[@id="entryforms-control-element"]').send_keys('username')
browser.find_element_by_id('entryforms-control-element').send_keys('username')
browser.find_element_by_class_name('entryforms-element-text').send_keys('username')
请帮助我!
答案 0 :(得分:2)
您可能需要检查找到的元素的大小,以确保您确实找到了某些内容。
如果您使用的是Firefox,可能会妨碍: selenium webdriver is clearing out fields after sendKeys had previously populated them
或者一些javascript可能会在您的密钥被发送后重置字段(可能在页面加载后触发一些js)。
您也可以尝试首先调用click(),然后发送按键 - 如果是上面提到的问题或类似内容,这可能有助于关注元素。
答案 1 :(得分:0)
您确定Xpatch的选择是否正确?
在我看来,应该是这样的:
browser.find_element_by_xpath(".//*[@id='entryforms-control-element']")
在每种情况下,只是为了确保更好的清洁,然后引入您的输入
browser.find_element_by_xpath(".//*[@id='entryforms-control-element']").clear()
browser.find_element_by_xpath(".//*[@id='entryforms-control-element']").send_keys('username')
无论如何我建议你使用带有插件firebug和firepath的Firefox来确定元素的正确xpath
答案 2 :(得分:-1)
跳转浏览器开发人员工具并检查元素在网络选项卡中加载所需的时间。然后根据此信息在代码中设置load和element find之间的等待。