各位大佬, 网页得下拉菜单得onchange事件怎么触发

大家好,用UIpath做了个小流程,其中一个网页上有一个下拉菜单,此下拉菜单绑定了一个onchange事件, 在studio上用select item activity可以把选项选中,完全没有问题,但是onchange事件不触发。

有没有人碰到相同问题的, 请各位大佬给点意见

1 Like

可以分享一下这个网页吗?一般情况下用select item而且选项发生变化时是会触发onchange事件的。

看起来这是个HTML规范的select标签,这种事件在item改变后就会触发。
有些不是select标签,而是某个控件,这时候通常要点击控件,用上下键选择item,然后敲回车触发事件

我加的图片就是那个下拉菜单的源码,网站是我们的内网,您看不到

选完了以后完全没有反应, 很无助,很无奈。是不是因为option的value和display value不一样?

请尝试用Type into输入选项。或在select item后Send Hotkey - 回车。当选择框失去焦点时会触发onchange事件。

谢谢,我找到可能的原因了,之所以没有触发是因为这个onchange的函数调用了一个post请求,如果用机器人改变下拉菜单的值,就会报一个错:
An outgoing call cannot be made since the application is dispatching an input-synchronous call.

不知道有没有解

找到一个解决方案:

  1. click那个dropdown list,展开它的选项
  2. send hotkey: 因为我的选项都是数字大头的,我发送想要的数字
  3. send hotkey: 回车

但是这个只适用于选项是数字开头的。

我有个想法不知道行不行。
send hotkey那部分也用click来代替
至于click对应的selector的获取,可以事先用自动录制功能取得或uiexplorer直接查找

UiPath的selector选不上下拉菜单option,即使动态修改selector,也没用

我用新浪首页的下拉菜单试了下,是可以选中的。
option由【新闻】变【图片】
脚本我上传了,你试试看?
tmp tmp3.xaml (6.9 KB)

如果新浪那个下拉菜单不符合你的下拉菜单,你可以找一个我也能访问的地方,然后我再做个脚本试试看。

你这个其实不是选择的options,你是点击了一个ul下面的li, 他俩是非常不同的。

根据我的理解,你的初衷是用uipath的select那个active选择option无法触发你的onchange事件。
于是我的想法是用click来做的话,就能触发了。
所以提出用click实现,它跟select肯定有区别,目的是实现你的最终目的,而不是要纠结于click操作的是option还是li。。。

问题的关键是Uipath它click不到options. 前面我已经说的很清楚了。

我发你的脚本可以click到新浪下拉列表里的某项内容
最终目的只要click到想要点击的内容不就可以了吗?
不明白为什么非要纠结options。。。orz

并不是所有你看到的下拉菜单后面结构都一样,好吗? 不明白就稍微学一点html的知识

所以我才说如果这个不符合你期望的下来菜单,你找一个符合的并且让我能访问的,我再做个。
你有仔细看我的回答吗?

你好,不是有这两个activities吗?如果是option的这两个试过了吗?image

抱歉,没看清问题,试试inject js script这个activity,(这个在ie上功能更完整一些,推荐用ie)。我觉得在window底下应该能找到一个叫callViaPost的函数。直接把选项赋给input用inject js调用以下代码:

function (element, input) {
return window.callViaPost(input);
}

或者select以后,trigger这个select元素的onchange,可以用ui explore选中这个select,也可以用document.querySelector找到这个元素。

function (element, input) {
var event = new Event(‘change’);
element.dispatchEvent(event);
}

https://stackoverflow.com/questions/2856513/how-can-i-trigger-an-onchange-event-manually