204 lines
7.4 KiB
JavaScript
204 lines
7.4 KiB
JavaScript
// ====== ** Thay đổi thông tin test ở đây ** ======
|
|
|
|
// Trình duyệt test
|
|
const Browser = 'chrome'; // Lựa chọn: chrome, firefox
|
|
const DOMAIN = "https://demopc8.hurasoft.com/?show_template=xstore"; // Tên miền
|
|
var text_search = 'case'; // Từ khóa tìm kiếm
|
|
var productNameClass = '.p-name'; // Class chứa url sản phẩm
|
|
var buttonAddProductId = '#add_to_cart' // Id/class nút thêm sp vào giỏ ở trang chi tiết sản phẩm
|
|
|
|
// Thông tin người dùng, sử dụng để nhập vào form: Mua hàng, đăng ký, đăng nhập, bình luận,.....
|
|
var user_name = 'Test giỏ hàng'; // ==== Tên
|
|
var user_email = 'test@mail.com'; // ==== Email
|
|
var user_mobile = '0987654321'; // ==== Số điện thoại
|
|
var user_address = 'Số 3 ngõ 18 Yên Lãng'; // ==== Địa chỉ
|
|
var user_province = 'Hà Nội'; // ==== Tỉnh/Thành phố
|
|
var user_district = 'Quận Đống Đa'; // ==== Quận/Huyện
|
|
var user_ward = 'Phường Láng Hạ'; // ==== Phường/Xã
|
|
var user_content = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'; // Nội dung
|
|
// ============================================================================================================
|
|
|
|
|
|
// ==================================== ** KHÔNG THAY ĐỔI ** ====================================
|
|
const { Builder, By, Select, until, implicitlyWait } = require("selenium-webdriver");
|
|
const { Driver } = require("selenium-webdriver/chrome");
|
|
|
|
require('chromedriver');
|
|
require('selenium-webdriver/chrome');
|
|
|
|
(async function AddToCartTest() {
|
|
|
|
let driver = await new Builder().forBrowser(Browser).build();
|
|
|
|
try {
|
|
// Setup
|
|
await driver.get(DOMAIN);
|
|
await driver.manage().window().maximize();
|
|
await driver.manage().setTimeouts({ implicit: 3000, pageLoad: 3000, script: 3000 })
|
|
|
|
driver.executeScript(`
|
|
var jquery_script = document.createElement('script');
|
|
jquery_script.src = 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js';
|
|
document.getElementsByTagName('head')[0].appendChild(jquery_script);
|
|
`)
|
|
|
|
driver.executeScript('$ = window.jQuery;'); // Load jQuery
|
|
// == End Setup
|
|
|
|
|
|
|
|
// 1. Header: Tìm kiếm sp
|
|
var input_search = await driver.findElement(By.xpath("//input[@name='q']"));
|
|
|
|
await testSearchWeb(driver, text_search, input_search).then(function redirectProductDetail() {
|
|
goToProductDetail(driver, productNameClass);
|
|
});
|
|
|
|
|
|
// 2. Chi tiết sp: Thêm sp vào giỏ
|
|
await driver.wait(until.elementLocated(By.css(buttonAddProductId))).click();
|
|
|
|
|
|
// 3. Giỏ hàng: Gửi đơn hàng
|
|
await submitCartForm(driver);
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
checkListWeb(driver);
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
driver.quit();
|
|
|
|
}, 5000)
|
|
}
|
|
|
|
})();
|
|
|
|
// == Header: Test hiển thị danh sách sản phẩm tìm kiếm
|
|
async function testSearchWeb(driver, text_search, input_search) {
|
|
await driver.actions()
|
|
.move({ origin: input_search })
|
|
.pause(1000)
|
|
.doubleClick()
|
|
.sendKeys(text_search)
|
|
.pause(2000)
|
|
.perform();
|
|
|
|
await driver.findElement(By.xpath("//button[@type='submit']")).click(); //== Kiểm tra đến trang tìm kiếm
|
|
|
|
await checkListWeb(driver);
|
|
}
|
|
|
|
// == Ô sản phẩm: Điều hướng đến trang chi tiết sản phẩm
|
|
async function goToProductDetail(driver, productNameClass) {
|
|
var productUrl = driver.findElement(By.css(productNameClass));
|
|
await driver.actions()
|
|
.move({ origin: productUrl })
|
|
.pause(1000)
|
|
.press()
|
|
.perform();
|
|
|
|
await productUrl.click();
|
|
|
|
await checkListWeb(driver);
|
|
}
|
|
|
|
// == Giỏ hàng: Nhập thông tin người dùng và gửi
|
|
async function submitCartForm(driver) {
|
|
await driver.findElement(By.xpath("//input[@name='user_info[name]']")).sendKeys(user_name);
|
|
await driver.findElement(By.xpath("//input[@name='user_info[email]']")).sendKeys(user_email);
|
|
await driver.findElement(By.xpath("//input[@name='user_info[mobile]']")).sendKeys(user_mobile);
|
|
await driver.findElement(By.xpath("//input[@name='user_info[address]']")).sendKeys(user_address);
|
|
await new Select(driver.findElement(By.xpath("//select[@name='user_info[province]']"))).selectByVisibleText(user_province);
|
|
await new Select(driver.findElement(By.xpath("//select[@name='user_info[district]']"))).selectByVisibleText(user_district);
|
|
await new Select(driver.findElement(By.xpath("//select[@name='user_info[ward]']"))).selectByVisibleText(user_ward);
|
|
|
|
await driver.findElement(By.css("form[action='/send-cart']")).submit();
|
|
|
|
await checkListWeb(driver);
|
|
}
|
|
|
|
|
|
// Hiển thị bảng danh sách test
|
|
async function checkListWeb(driver) {
|
|
await driver.executeScript(CreateTableCheck);
|
|
|
|
await driver.executeScript(checkSearch, check_list);
|
|
|
|
await driver.executeScript(checkAddCart, check_list);
|
|
|
|
await driver.executeScript(checkSendCart, check_list);
|
|
}
|
|
|
|
|
|
function CreateTableCheck() {
|
|
var table_container = document.createElement('div');
|
|
|
|
table_container.id = 'js-table-container';
|
|
|
|
document.body.appendChild(table_container);
|
|
|
|
$("#js-table-container").html(`
|
|
<style>#js-table-check td, #js-table-check th {border: 1px solid #ccc;padding: 7px 10px;}</style>
|
|
|
|
<div id="js-table-check" style="position:fixed;left:10px;bottom:50px;z-index: 999;background:#fff;box-shadow:0 1px 5px rgb(0 0 0 / 30%);padding:10px;">
|
|
<table>
|
|
<thead>
|
|
<tr align="center"><th>Danh sách</th> <th>Trạng thái</th></tr>
|
|
</thead>
|
|
|
|
<tbody> <!-- //check list --> </tbody>
|
|
</table>
|
|
</div>
|
|
`);
|
|
}
|
|
|
|
var check_list = 'function checkListFormFunc(condition, results) {if (condition) {$("#js-table-check tbody").append(`<tr><td>${results}:</td> <td align="center" style="font-weight:700;color:green;">OK</td></tr>`)} else {$("#js-table-check tbody").append(`<tr><td>${results}:</td> <td align="center" style="font-weight:700;color:red;">FALSE</td></tr>`)}}';
|
|
|
|
var tableCheck = '$("#js-table-check")';
|
|
|
|
// ============= *** Danh sách kiểm tra *** =============
|
|
|
|
// Kiểm tra tìm kiếm
|
|
function checkSearch(check_list, text_search) {
|
|
eval(check_list);
|
|
var check_input = '';
|
|
var current_url = location.search;
|
|
|
|
if (current_url.includes = '?q=' + text_search || $('input[name="q"]').val() != '') {
|
|
check_input = 'ok';
|
|
}
|
|
|
|
checkListFormFunc(check_input !== '', 'Kiểm tra tìm kiếm sản phẩm')
|
|
}
|
|
|
|
// Kiểm tra thêm sản phẩm vào giỏ hàng
|
|
function checkAddCart(check_list) {
|
|
eval(check_list);
|
|
|
|
var current_url = location.pathname;
|
|
var check_quantity = '';
|
|
|
|
if (current_url == '/cart' || current_url == '/send-cart') {
|
|
check_quantity = 'ok';
|
|
}
|
|
|
|
checkListFormFunc(check_quantity !== '', 'Kiểm tra thêm sản phẩm vào giỏ hàng');
|
|
}
|
|
|
|
// Kiểm tra gửi đơn hàng
|
|
function checkSendCart(check_list) {
|
|
eval(check_list);
|
|
var check_sendCart = $('.content-send h1').text().trim();
|
|
var check_text = '';
|
|
|
|
if (check_sendCart == 'Đặt hàng thành công') {
|
|
check_text = 'Đặt hàng thành công'
|
|
}
|
|
|
|
checkListFormFunc(check_text !== '', 'Kiểm tra gửi đơn hàng');
|
|
} |