Tự động xóa toàn bộ bài viết trên WordPress bằng LoadRunner

Để tự động hóa việc xóa tất cả bài viết trong danh sách blog WordPress, ta cần thực hiện hai bước chính: truy vấn danh sách bài viết để thu thập ID và token bảo mật, sau đó lặp qua từng mục để gửi yêu cầu xóa.

Trong quá trình tải trang danh sách bài viết, sử dụng hàm web_reg_save_param với tùy chọn Ordinal=All để trích xuất đồng thời tất cả giá trị khớp — cụ thể là ID bài viết và mã nonce dùng để xác thực hành động xóa.

// Trích xuất tất cả ID bài viết và mã _wpnonce từ phản hồi HTML
web_reg_save_param("post_nonce", "LB=_wpnonce=", "RB=\" class=\"submitdelete", "Ordinal=All", LAST);
web_reg_save_param("post_id", "LB=tr id=\"post-", "RB=\" class=", "Ordinal=All", LAST);

Sau khi thu thập được các tham số, đếm tổng số bài viết thông qua biến {post_id_count}, rồi tiến hành vòng lặp để lần lượt xóa từng bài.

Dưới đây là đoạn mã hoàn chỉnh thực hiện quy trình này:

Action()
{
    int i;
    int total_posts;
    char post_index[16];
    char nonce_index[20];

    // Truy cập trang đăng nhập
    web_url("login_page",
        "URL=http://autotest/wordpress/wp-login.php",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Mode=HTTP",
        LAST);

    // Gửi thông tin đăng nhập
    web_submit_data("login_action",
        "Action=http://autotest/wordpress/wp-login.php",
        "Method=POST",
        "RecContentType=text/html",
        "Referer=http://autotest/wordpress/wp-login.php",
        "Mode=HTTP",
        ITEMDATA,
        "Name=log", "Value=admin", ENDITEM,
        "Name=pwd", "Value=123456", ENDITEM,
        "Name=wp-submit", "Value=Login", ENDITEM,
        "Name=redirect_to", "Value=http://autotest/wordpress/wp-admin/", ENDITEM,
        "Name=testcookie", "Value=1", ENDITEM,
        LAST);

    // Đăng ký trích xuất tham số trước khi tải danh sách bài viết
    web_reg_save_param("post_nonce", "LB=_wpnonce=", "RB=\" class=\"submitdelete", "Ordinal=All", LAST);
    web_reg_save_param("post_id", "LB=tr id=\"post-", "RB=\" class=", "Ordinal=All", LAST);

    // Tải trang danh sách bài viết
    web_url("posts_list",
        "URL=http://autotest/wordpress/wp-admin/edit.php",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=http://autotest/wordpress/wp-admin/edit.php",
        "Mode=HTTP",
        LAST);

    // Lấy tổng số bài viết
    total_posts = atoi(lr_eval_string("{post_id_count}"));
    lr_message("Tổng số bài viết: %d", total_posts);

    // Lặp qua từng bài viết để xóa
    for (i = 1; i <= total_posts; i++) {
        // Tạo tên tham số động cho ID bài viết
        sprintf(post_index, "{post_id_%d}", i);
        lr_save_string(lr_eval_string(post_index), "current_post");

        // Tạo tên tham số động cho mã nonce
        sprintf(nonce_index, "{post_nonce_%d}", i);
        lr_save_string(lr_eval_string(nonce_index), "current_nonce");

        // Gửi yêu cầu xóa bài viết
        web_url("move_to_trash",
            "URL=http://autotest/wordpress/wp-admin/post.php?post={current_post}&action=trash&_wpnonce={current_nonce}",
            "Resource=0",
            "RecContentType=text/html",
            "Referer=http://autotest/wordpress/wp-admin/edit.php",
            "Mode=HTTP",
            LAST);
    }

    return 0;
}

Quá trình thực thi sẽ ghi nhận từng bước trích xuất tham số và gửi yêu cầu xóa. Kết quả cho thấy hệ thống đã xử lý thành công 20 bài viết, mỗi lần đều truyền đúng ID và mã nonce tương ứng, dẫn đến chuyển hướng sang trang danh sách với thông báo "đã xóa 1 bài".

Thẻ: LoadRunner WordPress automation WebTesting PerformanceTesting

Đăng vào ngày 13 tháng 7 lúc 22:13