กรอบซีลีเนียมของฉันสามารถใช้ข้อความขาเข้าได้หรือไม่
ฉันต้องการทราบว่า Selenium framework ของฉันสามารถยกเลิกคิวข้อความที่อยู่ในคิวข้อความได้อย่างไร ฉันได้สร้างแอปพลิเคชันเพื่อส่งสตริง JSON ที่มีคู่ k / v ไปยังคิวข้อความ
สถาปัตยกรรมของฉันมีดังต่อไปนี้และแยกแอป:
- มีเว็บแอปพลิเคชัน JSP ที่ยอมรับพารามิเตอร์ที่ทำให้เกิดสตริง JSON
- มีผู้ส่งข้อความอยู่และใช้สตริง JSON และเผยแพร่ไปยังคิว
- ผู้บริโภคข้อความมีอยู่และใช้งานข้อความ มันนั่งอยู่ตรงนี้
- Selenium Java Framework มีอยู่ แต่ฉันต้องการประมวลผลข้อความและสำหรับแต่ละข้อความจะตีความคู่ k / v และเริ่มต้นสคริปต์
ฉันต้องการใช้ข้อความที่อยู่ในคิวและประมวลผลข้อความเหล่านี้ภายในกรอบซีลีเนียมฉันจะทำสิ่งนี้ได้อย่างไร
ฉันจะขอบคุณสำหรับความช่วยเหลือ ฉันได้แก้ไขคำถามด้วยรหัส
นี่คือข้อมูลโค้ดสำหรับส่งข้อความ 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": "[email protected]",
}
เมื่อทดสอบโดยแยกมันใช้งานได้ดีอย่างสมบูรณ์สิ่งที่ฉันหมายถึงคือฉันส่งข้อความและตรวจสอบว่าผู้บริโภคได้รับมันการเพิ่มรหัสผู้บริโภคในกรอบงานของฉันคือที่ที่ฉันติด
คำตอบ
ฉันขอแนะนำให้คุณอย่าคิดว่าคุณมี " กรอบซีลีเนียม " - คิดว่ามันเป็น " กรอบจาวา "
ซีลีเนียมเป็นชุดของไลบรารีที่ช่วยให้คุณทำงานอัตโนมัติเว็บเบราว์เซอร์ที่ระดับ GUI เฟรมเวิร์กเป็นโซลูชันที่เข้ารหัสเพื่ออำนวยความสะดวกในการสร้างและจัดการชุดทดสอบของคุณ - ไม่จำเป็นต้อง จำกัด เฉพาะซีลีเนียมและโอกาสที่เป็นเพียงหนึ่งในองค์ประกอบของมัน
พยายามตอบคำถามของคุณโดยตรง:
- SELENIUM ไม่สามารถอ่านข้อความได้
- JAVA สามารถอ่านข้อความ
หาก rabbitmq ของคุณมีส่วนหน้าเว็บแล้วคุณอาจจะสามารถใช้ซีลีเนียมสำหรับมัน แต่นี้ไม่ได้มีประสิทธิภาพมากหรือวิธีการแก้ปัญหาเชิงตรรกะ
สิ่งที่คุณอาจต้องการพิจารณาและสิ่งที่ฉันจะทำคือการขยายกรอบการทำงานของคุณเพื่อใช้ไลบรารี rabbitmq เพื่อประมวลผลข้อความตามที่คุณต้องการ ไลบรารีเหล่านี้ออกแบบมาเพื่องานนี้
คุณพูด:
ฉันต้องการประมวลผลข้อความและสำหรับแต่ละข้อความมันจะตีความคู่ k / v และเริ่มต้นสคริปต์
ฉันเข้าใจว่านี่หมายความว่าข้อความเหล่านี้เป็นข้อมูลเบื้องต้นสำหรับการทดสอบ หากคุณต้องการอ่านค่าของข้อความก่อนการทดสอบคุณสามารถ:
- วาง get / read ด้วย
@Before
วิธีการทั่วไป - หรือหากเป็นข้อความเฉพาะต่อกรณีทดสอบให้เพิ่มลงในจุดเริ่มต้นของการทดสอบ
คุณกำลังทำงานใน java ดังนั้นคุณสามารถทำอะไรก็ได้ที่คุณต้องการจริงๆ
ที่จะได้รับคุณเริ่มต้น rabbitmq กวดวิชาเริ่มต้นที่นี่
นี่คือตัวอย่างสวัสดีชาวโลกสำหรับการอ่านข้อความจากคิว:
public class Recv {
private final static String QUEUE_NAME = "hello";
public static void main(String[] argv) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
}
}