Selenium 输入 a 触发调用接口返回下拉菜单的 list,但这个应该是 ajax 返回的数据,该如何选择任意其中一个呢?

皆非 · 2019年05月10日 · 最后由 皆非 回复于 2019年05月13日 · 461 次阅读

更新问题:

如上图,输入 a 触发调用接口返回下拉菜单的 list,但这个应该是 ajax 返回的数据,html dom 没有显示这些元素,该如何选择任意其中一个呢?

  • 问题已解决,使用
action.move_to_element_with_offset(element, x, y)

历史问题记录

目前遇到一个问题,我们的搜索框输入值以后会调用接口根据输入的值查询

self._find_element(xxx).send_keys(value)

这种 send_keys 直接发送值给 input 输入框是不会调用接口查询的,所有有什么其他方法可以触发这个接口查询吗?

在某度上搜到的都是 Python+Selenium 操作之 键盘组合键 模拟操作
是不是可以通过模拟键盘输入事件输入值?请教路过的大牛帮忙看下,先谢了。

问题补充:

1.手动输入 a 时会调用接口返回 list,但 send_keys() 就触发不了接口的调用
2.手动输入 a 后加上空格可以再次调用接口,send_keys(a) 后 加上 send_keys(Keys.SPACE) 键盘事件也触发不了

----------- 以上问题暂时加个

ActionChains(self.driver).click(element).perform()

事件解决了

共收到 8 条回复 时间 点赞

有 onchange,onkeypress 这类的事件吗,是否可以执行 onchange 的 js 方法

直接元素 send_keys 貌似是直接修改输入框的 value,你可以试一下 ActionChains 的 send_keys_to_element 方法,太久没搞 selenium,忘记了😂

llggww 回复

看了下 dom 没有这些事件,目前用了 ActionChains 加个鼠标事件暂时可以触发接口了

独缺 回复

send_keys_to_element 试了下也不行,现在加个 ActionChains().click() 暂时解决了这个问题。然后出现新问题了。。。也帮看下哈,更新了内容 😂 😂 😂 😂

皆非 回复

你能看到的 应该都是有 dom 的 你再找找。。。

独缺 回复

没有的哦,这里应该是 ajax 返回的。

皆非 回复

直接找下拉列表的元素找不到吗?那不应该啊,如果实在找不到,那要不就结合 Sikuli 来做可能会好一些,不想调用 Sikuli,也可以自己解析当前桌面截图像素来定位,建议还是尽量用 dom

独缺 回复


这个好像可以哈

皆非 关闭了讨论 05月14日 14:10
皆非 selenium 定位不到下拉框元素 中提及了此贴 05月16日 19:17
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册