我想知道我的selenium框架如何对消息队列中的消息进行出列。我构建了一个应用程序,将包含k/v对的json字符串发送到消息队列。
我的体系结构如下所示,并且是独立的应用程序:
存在一个jspweb应用程序,它接受产生json字符串的参数
消息发送者存在并获取json字符串并将其发布到队列
消息使用者存在并使用消息。基本上就是坐在这里
一个selenium java框架已经存在,但是我想处理消息,对于每条消息,它将解释k/v对并启动脚本。
我想使用队列中已经存在的消息并在selenium框架中处理这些消息,如何实现这一点?
我会感激你的帮助。我已经用密码编辑了这个问题
这是发送json消息的代码段
public class MessageSender {
public static void main(String[] args) throws IOException {
SingleNumberLogin generateLogin = new SingleNumberLogin();
//function call to build the JSON object
String jsonQueue = generateLogin.buildJASONObject();
ConnectionFactory conFactory = new ConnectionFactory();
try {
Connection connInterface = conFactory.newConnection();
Channel mqChannel = connInterface.createChannel();
mqChannel.queueDeclare("MyQueue",false,false,false,null);
//Just assigning json to another string, then publish the message
String myMessage = jsonQueue;
mqChannel.basicPublish("","MyQueue",false ,false, null,myMessage.getBytes());
}catch (
IOException | TimeoutException e)
{
System.out.println(e.getStackTrace());
}
conFactory.setUsername("guest");
conFactory.setPassword("guest");
conFactory.setVirtualHost("/");
conFactory.setHost("localhost");
conFactory.setPort(5672);
}
}
我插入到自动化脚本的启动函数中的用户代码的代码段,因此如果消息到达,将执行单个测试用例
@BeforeTest
public static void initializeTestBaseSetup() throws Exception, IOException, TimeoutException {
ConnectionFactory conFactory = new ConnectionFactory();
Connection connInterface = conFactory.newConnection();
Channel mqChannel = connInterface.createChannel();
mqChannel.queueDeclare("MyQueue",false,false,false,null);
mqChannel.basicConsume("MyQueue", true, (consumerTag, message) -> {
//convert to byte array
String m = new String (message.getBody(), "UTF-8");
System.out.println("Message received" + m);
}, consumerTag -> {
});
}
输出json
JSON Message received 2020-08-28T20:39:30.845{
"NUMBER": "0000011111",
"Type": "BAU",
"User": "MyUser ",
"Email": "riidonesh@gmail.com",
}
当单独测试时,它工作得非常好,我的意思是,我发送消息并检查消费者是否收到消息,将消费者代码添加到我的框架中是我遇到的难题。
1条答案
按热度按时间ecr0jaav1#
我建议您不要把您拥有的东西看作是“selenium框架”,而是把它看作是“java框架”。
selenium是一组库,允许您在gui级别自动化web浏览器。这个框架是一个代码化的解决方案,可以帮助您创建和管理测试套件—它不必局限于selenium和它的一个组件。
试着直接回答你的问题:
selenium无法读取消息
java可以读取消息
如果您的rabbitmq有一个web前端,那么您可以使用selenium来实现它,但这不是一个非常有效或合乎逻辑的解决方案。
您可能需要考虑的是,我将要做的是扩展您的框架,以便根据需要使用rabbitmq库来处理消息。这些库是为此任务而设计的。
你说:
我想处理这些消息,对于每条消息,它将解释k/v对并启动脚本。
我理解这意味着消息是测试的预请求数据。如果要在测试之前读取消息的值,可以:
将get/read放在泛型中
@Before
方法或者,如果它是每个测试用例的一条特定消息,则将其添加到测试的开始部分。
你在java工作,所以你可以做任何你真正想做的事。
为了让您开始,rabbitmq教程从这里开始。
下面是从队列中读取消息的hello world示例: