问答 Python+selenium 中,我用 firbug 找到了下拉框可选择的元素的定位,并且显示正确,但是写完脚本执行时报错,请指教

grace · 2018年06月28日 · 最后由 笑笑521 回复于 2018年07月03日 · 2292 次阅读

本人最近有要写自动化脚本,在定位就遇到了问题,
这是我定位下拉菜单元素的位置,firbug 显示是正确的
但是我写脚本
from selenium import webdriver
from selenium.webdriver.common.by import By
d=webdriver.Chrome()
d.get('https://xxxxxxxx')
d.find_element_by_xpath('//input[@type="text"]').send_keys('xxxxxx')
d.find_element_by_xpath('//input[@type="password"]').send_keys('888888')
d.find_element_by_xpath('//input[@id="check"]').send_keys('xxxxx')
sleep(1.5)
d.find_element_by_xpath('//button[@class="el-button el-button--primary"]').click()
sleep(1.5)
d.find_element_by_xpath('//span[text()="xxxx"]').click()
d.find_element_by_xpath('//a[text()="xxxxx"]').click()
sleep((3))
d.find_element_by_xpath('//span[text()="xxxx"]').click()
sleep(1.5)
d.find_element_by_xpath('//input[@placeholder="xxxxx"]').click()
d.find_element_by_xpath('//li[@class="el-select-dropdown__item selected hover"]').click() 这段话是错的 不知道为什么就是不能选择下拉框的元素
已经尝试过其他的定位方法,感觉定位是准确的,但是加上 click 就不对了
请大神抽空解答一下,感激不尽

共收到 16 条回复 时间 点赞
仅楼主可见

怎么不对,有报错信息么,还是点了没反应?

selenium 的 Select 模块了解下, 直接 select by index\value\text , 会方便很多

grace #16 · 2018年06月28日 Author
山姆大叔 回复

也不对,都试过了 需要签到不是唯一的定位,但是我也试过了层级定位方式,我觉得我的定位是没有错的,但是就是那个代码还是有有问题

grace #15 · 2018年06月28日 Author
雨夜狂奔 回复

执行脚本是报错,不是没反应,执行到这行代码就执行报错

Jerry li 回复

但是这不是 select 选择框,所以这里应该是不适用吧??

很简单的一个问题,使用 css 定位,hover 是在鼠标移动到 select 上面后才加上的 css 类

find_elements 

多个元素啊。这里不能用

find_element

而且看截图用 class_name
上面定位 xpath 的话,稍微中途给个等待时间 time.sleep(0.5)
obj =定位器 + 元素是否直接加 click,有些控件好像需要拆开 <--这个不确定

推荐选择用这个把

rom selenium.webdriver.support.ui import Select  
Select(driver.find_elements_class_name(value))

这几天做 java 的 selenium 测试,遇到过能找到元素,但是却无法点击的情况。你可以试试看把 findxxx.click() 分成两步,是否也是我这种情况。

grace · #10 · 2018年06月29日 Author
仅楼主可见
grace · #11 · 2018年06月29日 Author
仅楼主可见
仅楼主可见
仅楼主可见
Scofell 回复

谢谢啦,测试环境啦,我昨天实在没人问了 怕贴的图片让人不清楚,所以代码也写了,谢谢你的提醒,问题解决了,请问以后怎么判断哪些元素是动态的呀,可以再说说么😍

grace 关闭了讨论 06月29日 16:02
grace 重新开启了讨论 06月29日 16:03
仅楼主可见

咋解决的?

grace 关闭了讨论 07月04日 09:31
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册