Selenium 请大神解答 element-UI 如何定位下拉框里的内容

arsenalley · 2019年05月27日 · 最后由 东东聊质效 回复于 2022年06月08日 · 5007 次阅读

WEB 的 UI 用的是 element 的框架;
像这样的情况:
界面:

查看元素:

这个页面有好几个这样的下拉框选择,都是的这个:class="el-select-dropdown__item"
用 xpath 定位不到。

脚本:
orders = driver.find_element_by_xpath('//input[@placeholder="请选择接单人"]')
driver.execute_script("arguments[0].removeAttribute('readonly')",orders)
orders.send_keys("宋青")
driver.find_element_by_class_name("el-form").click()
sleep(2)

这脚本运行没有报错,但是页面的框里不会显示出 宋青

求大神解答。。。。

共收到 15 条回复 时间 点赞

driver.find_element_by_xpath('//li[contains(text(),"宋青")]').click();
另外,python API 里面没有 select_by_visible_text()?难道只有 JAVA 有 selectByVisibleText()?

槽神 回复

感谢大神回复,用你的方法报错了
selenium.common.exceptions.InvalidSelectorException: Message: Given xpath expression "//li[contains(text(),"加急"]" is invalid: SyntaxError: The expression is not a legal expression.



像这种也是下拉框形式的

你这个下拉框并非常规的下拉框,如果常规的方法不行,考虑使用 js 脚本直接执行

是啊,这个下拉框到了外面那层 div 了
你说的 js 脚本是直接赋值吗?

arsenalley 回复

我可没让你少打半个括号……😏

槽神 回复

😂 加上了还是说定位不到

arsenalley 回复

试试 select_by_visible_text() 呢?

now_handle = driver.current_window_handle
driver.find_element_by_xpath('//li[contains(text(),"宋青")]').click()
下拉框你当做一个弹窗这样定位下试试

槽神 回复

感谢大神,这个 select 只能用于 html 里的 select 对象
我用 driver.find_element_by_xpath('//span[text()=\"加急\"]').click() 搞定了 😍

迷惘 回复

感谢🙏了,你这个方法我试了,不行 😕

试试用 xpath 定位 span 就行了
xpath = “//span[contains(text(),’ 宋青 ‘)]” 或者 xpath = “//span[contains(.,’ 宋青 ‘)]”

感谢感谢,一中午试了各种 js 都定位不到

我这边提示 element click intercepted: Element ... is not clickable at point (1739, 28);

我把 driver.find_element_by_xpath('//li[contains(text(),"宋青")]').click() 这个里面的"宋青",换成了一个参数 name,而这个 name 从 excel 中读取,就提示上面的错误了

你这个问题,为什么要搞这么复杂,简单一点加个 id 不就解决了。

我试了一下貌似回答用 xpath 的都不管用。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册