一.问题
1.在定位输入框send_keys输入时候,不能聚焦元素问题 WebDriverException: Message: unknown error: cannot focus element
2.元素的确存在并且点击也有反应,但是无法输入是因为这并不是input输入框的xpath,所以无法聚焦元素进行内容输入。
二.解决
1.第一种方法
from selenium.webdriver import ActionChains
from selenium.webdriver.common.action_chains import ActionChains
WebDriverWait(driver,15,0.5).until(EC.visibility_of_element_located((By.XPATH,"//div[@arr='mail.to_render']"))).click()
ActionChains(driver).click(driver.find_element_by_xpath("//div[@arr='mail.to_render']")).send_keys(“281754043@qq.com”).perform()
2.第二种方法
from selenium.webdriver import ActionChains
from selenium.webdriver.common.action_chains import ActionChains
name=self.driver.find_element_by_xpath("//div[@arr='mail.to_render']")
action = ActionChains(self.driver)
action.move_to_element(name)
action.click(name)
action.send_keys("281754043@qq.com")
action.perform() #这个一定要的
三.总结(视情况而定)
1.上周碰到了 Unable to locate element,即“无法定位元素”,后靠两行代码解决:
wait = ui.WebDriverWait(driver,5)
wait.until(lambda driver:driver.find_element_by_xpath("username"))
2.今天又碰到 cannot focus element,即“无法聚焦元素”,开始以为是 xpath 问题,换了种定位方法,还是无法聚焦。把这段代码单独存放到一个文件里,执行该文件:
driver.get("http://xxx")
driver.find_element_by_xpath("//input[@placeholder='搜索']").clear()
driver.find_element_by_xpath("//input[@placeholder='搜索']").send_keys("xxxxx")
3.执行成功,可见定位本身没有问题,莫非跟 Unable to locate element 一样,于是又加入智能等待 WebDriverWait,即如下两行代码。
wait = ui.WebDriverWait(driver,5)
wait.until(lambda driver: driver.find_element_by_id("username"))



