กรอบซีลีเนียมของฉันสามารถใช้ข้อความขาเข้าได้หรือไม่

Aug 19 2020

ฉันต้องการทราบว่า Selenium framework ของฉันสามารถยกเลิกคิวข้อความที่อยู่ในคิวข้อความได้อย่างไร ฉันได้สร้างแอปพลิเคชันเพื่อส่งสตริง JSON ที่มีคู่ k / v ไปยังคิวข้อความ

สถาปัตยกรรมของฉันมีดังต่อไปนี้และแยกแอป:

  1. มีเว็บแอปพลิเคชัน JSP ที่ยอมรับพารามิเตอร์ที่ทำให้เกิดสตริง JSON
  2. มีผู้ส่งข้อความอยู่และใช้สตริง JSON และเผยแพร่ไปยังคิว
  3. ผู้บริโภคข้อความมีอยู่และใช้งานข้อความ มันนั่งอยู่ตรงนี้
  4. 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]",
}

เมื่อทดสอบโดยแยกมันใช้งานได้ดีอย่างสมบูรณ์สิ่งที่ฉันหมายถึงคือฉันส่งข้อความและตรวจสอบว่าผู้บริโภคได้รับมันการเพิ่มรหัสผู้บริโภคในกรอบงานของฉันคือที่ที่ฉันติด

คำตอบ

RichEdwards Aug 19 2020 at 10:09

ฉันขอแนะนำให้คุณอย่าคิดว่าคุณมี " กรอบซีลีเนียม " - คิดว่ามันเป็น " กรอบจาวา "

ซีลีเนียมเป็นชุดของไลบรารีที่ช่วยให้คุณทำงานอัตโนมัติเว็บเบราว์เซอร์ที่ระดับ 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");

  }
}