java如何检测文本区域的值发生了变化?
我正在测试一个网络聊天应用程序。每次与我聊天的用户发送消息时,它都会被附加到文本区域,就像任何聊天解决方案一样。我想检测新消息何时到达并获取其内容(文本)
这类似于拦截给定元素的javascript onChange事件。使用Selenium WebDriver可以做到这一点吗
我有兴趣在任何支持此功能的浏览器上测试它。我不想在所有可能的浏览器上测试这种行为
其目的是开发一种类似聊天机器人的东西,每当另一端发送消息时,它就会发回消息。例如:
Remote user sends: Hello!
Selenium detects that and sends back: Your last message was "Hello!".
我无法更改聊天应用程序代码
是否可以在不共享文本区域的情况下执行此操作?我的目的是听事件,但我找不到类似的东西,而且我被告知Selenium WebDriver不支持它
# 1 楼答案
好吧,回答你的问题——“有可能吗?”-绝对是的!! 怎么做?-这实际上取决于聊天应用程序及其界面的自动化程度
例如,这个简单的聊天应用程序(就像聊天机器人)—— http://www.unionplatform.com/?page_id=2247 (我在示例代码中使用了它的直接URL)
检查下面的代码,我只是检查
<span>
标记的更新值,并将其循环5次,以读取用户已输入的内容,并使用相同的消息+循环计数(以区分消息)回复你也可以采用类似的方法,但正如我所说,这一切都取决于聊天应用程序
代码如下:
睡眠只是粗略地保持,直到聊天室得到更新,理想情况下,我会继续检查
<span>
计数,并在增加后继续上述代码的控制台输出如下所示: https://gist.github.com/anonymous/f1eef7198648d95f1d01
这里还有一个有趣的问题,这可能会有所帮助- How to test chat web app
# 2 楼答案
我认为Selenium WebDriver没有内置的对监听事件的支持,所以最好的选择可能是对您正在寻找的元素的更改进行投票
比如: