场景描述
现在要在模拟在输入框中输入会员名称,再点击加载出来的下拉框内容
遇到的问题
1、鼠标移开下拉框后,元素消失,如何选择下拉框内容
2、获取下拉框元素Xpath路径后,发现是一个动态的xpath,每次获取到的xpath值不同,如何定位
解决方法
问题1的解方法:
打开f12,切换到source标签,输入框输入将下拉框显示出来,立即点击||暂停按钮,通过源码暂停获取定位机会。
再点击元素选取,点击元素,即可定位,右击标签copy-Xpath,即可获取原生xpath。
本例中为/html/body/div[6]/ul/li/strong
问题2的解决方法:
将原生的Xpath写在代码调试过程中,发现当在页面输入相同内容,再选择下拉框内容后,下拉框的xpath变化了,每操作一次,下拉框的xpath都不一样
例如:
/html/body/div[6]/ul/li/strong
/html/body/div[12]/ul/li/strong
/html/body/div[13]/ul/li/strong
div的序号都不一样。
这就是遇到动态Xpath了,会导致元素定位失败,有时候找不到元素。
此时就要改为手动编写Xpath。
输入内容后,我要找标签中文本值等于“yunduan”的选项,
编写的xPath为 **//strong[text()='yunduan']**,不管筛选出多少记录(不管取消再输入操作多少次),任意选一个点击都可以。
代码对比
#原代码
# 输入会员名称
driver.find_element(By.XPATH,'/html/body/div[2]/form/table[1]/tbody/tr[6]/td[2]/input[1]').send_keys("yunduan")
#选择下拉框内容
driver.find_element(By.XPATH,'/html/body/div[6]/ul/li/strong').click()
#修改后
# 输入会员名称
driver.find_element(By.XPATH,'/html/body/div[2]/form/table[1]/tbody/tr[6]/td[2]/input[1]').send_keys("yunduan")
#选择下拉框内容
driver.find_element(By.XPATH,'//strong[text()="yunduan"]').click()
总结:
元素定位不到,可能是遇到了动态xpath,改为手写xpath
版权归原作者 夹喵喵的小螃蟹 所有, 如有侵权,请联系我们删除。