上周碰到了 Unable to locate element,即“无法定位元素”,后靠两行代码解决:
wait = ui.WebDriverWait(driver,5)
wait.until(lambda driver: driver.find_element_by_id("username"))
今天又碰到 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")
......
执行成功,可见定位本身没有问题,莫非跟 Unable to locate element 一样,
于是又加入智能等待 WebDriverWait,即如下两行代码:
wait = ui.WebDriverWait(driver,5)
wait.until(lambda driver: driver.find_element_by_id("username"))
问题解决(超时时间5秒可根据实际情况而定)。