栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第十二:Python+Selenium定位元素报错误:error: cannot focus element

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第十二:Python+Selenium定位元素报错误:error: cannot focus element

一.问题

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"))
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/961050.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号