Selenium 求助求助,selenium 实现非 input 标签的输入文本除了 js 还有其他办法么?

YXF · 2021年12月02日 · 最后由 陈恒捷 回复于 2021年12月02日 · 528 次阅读

如图所示的需求

以下是我的 js 实现

肉眼看确实把需要的内容输入到文本框中了,但是文字是置灰的,手动实际输入的文本是挺亮的,然后搜索时候还是被判定为无内容,这样还有别的办法么?以我有限的知识储备实在没有啥别的解决办法了😭 😭

共收到 12 条回复 时间 点赞
YXF #1 · 2021年12月02日 Author

百度/google 快翻遍了也没找到其他办法😭 js 还是一知半解的状态,实在没招了

之前也遇到过类似的,好像是需要先 click,才能传值

js 输完之后,再点一下这个输入框,如果光标定位到最后面的话,再模拟一下 backspace 键,删掉一位之后再试试

可以试一下

button = self.driver.find_element_by_xpath('//*[@class="xxx"]')
self.driver.execute_script('arguments[0].value="xxx;"',button)

楼主你找的控件不对,你这个 span 是一个浮在 input 输入框上面的 span 固定文字提示,不是真正存值的输入框。

从 css 名称看用的是 ant design 的 ant-select 控件,上官网 demo看了下,结构应该是如下图这样的:

既然要做 web ui 自动化,建议楼主可以花点时间了解下基本的 html 元素,特别是表单元素。不管控件库把控件包得多复杂,一个输入框最终还是得通过 input 控件输入和存值的。个人经验,要有效搜索到内容,不仅是关键字要用好,还得有相关的基础知识和大概解决思路。除了搜索引擎外,控件官网、相关 github 仓库的 issue 等多个地方都是非常有用的搜索入口。

placeholder一般是指输入框的隐藏解释内容,你定位这个即使用 JS 输入了,实际上也只是修改了隐藏解释内容,并不是 input 的实际内容,所以你查询为空很正常。你应该定位input标签去sendkeys才行

YXF #7 · 2021年12月02日 Author
陈恒捷 回复

还是大佬牛逼,这个确实是我粗心大意了,input 框在 span 标签上方的 div 里边包着了,我把所有的 div 都点开检查了,唯独没检查这个 div,我都想抽自己个嘴巴子😂 其实点开的话找到 input 框这个问题根本也就不是问题了。基础知识匮乏,这是痛点,尤其前端的知识储备几乎为零,见笑了

YXF #8 · 2021年12月02日 Author
黄clown 回复

嗯嗯,后来找到了,确实有 input 框,只是没找对地方。一般使用 chrome 右键元素检查会自动给定位到这个元素,这次没给直接定位到,于是就蒙圈了,一度以为不是 input 标签,闹笑话了😂

YXF #9 · 2021年12月02日 Author
Clouds 回复

主要没找对元素,试过先 click 再 send_keys😂 现在看来找不对元素其他办法都是进入误区了

YXF #10 · 2021年12月02日 Author
jerurry 回复

试过了,使用 js 赋值完光标是不能移动的。不过已经解决了,是元素没找对。还是感谢回答😀

YXF #11 · 2021年12月02日 Author

解决了,感谢回答😀

YXF 回复

不用那么激动,持续保持积累吧。现在除了布局外有特殊功能的标签不多,掌握起来不会花太多时间。

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