Cách sử dụng Selenium IDE với Scripts & Lệnh (Khẳng định, Xác minh)

Mục lục:

Anonim

Chúng tôi sẽ sử dụng trang web Mercury Tours làm ứng dụng web đang được thử nghiệm. Nó là một hệ thống đặt vé máy bay trực tuyến có chứa tất cả các yếu tố chúng tôi cần cho hướng dẫn này. URL của nó là http://demo.guru99.com/test/newtours/ và đây sẽ là URL cơ sở của chúng tôi.

Tạo tập lệnh bằng cách ghi

Bây giờ chúng ta hãy tạo tập lệnh thử nghiệm đầu tiên của mình trong Selenium IDE bằng phương pháp phổ biến nhất - bằng cách ghi lại. Sau đó, chúng tôi sẽ thực thi tập lệnh của mình bằng tính năng phát lại.

Bước 1

  • Khởi chạy Firefox và Selenium IDE.
  • Nhập giá trị cho URL cơ sở của chúng tôi: http://demo.guru99.com/test/newtours/.
  • Bật nút Ghi (nếu nó chưa được bật theo mặc định).
Bước 2

Trong Firefox, điều hướng đến http://demo.guru99.com/test/newtours/. Firefox sẽ đưa bạn đến trang tương tự như trang bên dưới.

Bước 3
  • Nhấp chuột phải vào bất kỳ khoảng trống nào trong trang, như trên biểu trưng Mercury Tours ở góc trên bên trái. Thao tác này sẽ hiển thị menu ngữ cảnh Selenium IDE. Lưu ý: Không nhấp vào bất kỳ đối tượng hoặc hình ảnh siêu liên kết nào
  • Chọn tùy chọn "Hiển thị các lệnh có sẵn".
  • Sau đó, chọn "khẳng định chính xác: Chào mừng: Mercury Tours." Đây là lệnh đảm bảo rằng tiêu đề trang là chính xác.
Bước 4
  • Trong hộp văn bản "Tên người dùng" của Mercury Tours, hãy nhập tên người dùng không hợp lệ, "invalidUNN".
  • Trong hộp văn bản "Mật khẩu", hãy nhập mật khẩu không hợp lệ, "invalidPWD".
Bước 5
  • Nhấp vào nút "Đăng nhập". Firefox sẽ đưa bạn đến trang này.
Bước 6

Tắt nút ghi để dừng ghi. Tập lệnh của bạn bây giờ sẽ trông giống như được hiển thị bên dưới.

Bước 7

Bây giờ chúng ta đã hoàn thành tập lệnh thử nghiệm của mình, chúng ta sẽ lưu nó trong một trường hợp thử nghiệm. Trong menu Tệp, chọn "Lưu Trường hợp Kiểm tra". Ngoài ra, bạn có thể chỉ cần nhấn Ctrl + S.

Bước 8
  • Chọn vị trí mong muốn của bạn, và sau đó đặt tên cho Trường hợp kiểm tra là "Không hợp lệ_login".
  • Nhấp vào nút "Lưu".
Bước 9.

Lưu ý rằng tệp đã được lưu dưới dạng HTML.

Bước 10.

Quay lại Selenium IDE và nhấp vào nút Phát lại để thực thi toàn bộ tập lệnh. Selenium IDE có thể sao chép mọi thứ một cách hoàn hảo.

Giới thiệu về Lệnh Selenium - Selenese

  • Lệnh Selenese có thể có tối đa hai tham số: đích và giá trị.
  • Các thông số không được yêu cầu mọi lúc. Nó phụ thuộc vào số lượng lệnh sẽ cần.

3 loại lệnh

Hành động

Đây là các lệnh tương tác trực tiếp với các phần tử của trang.

Ví dụ: lệnh "click" là một hành động do bạn tương tác trực tiếp với phần tử mà bạn đang nhấp vào.

Lệnh "type" cũng là một hành động vì bạn đang đặt các giá trị vào một hộp văn bản và hộp văn bản sẽ hiển thị chúng cho bạn. Có một sự tương tác hai chiều giữa bạn và hộp văn bản.

Người truy cập

Chúng là các lệnh cho phép bạn lưu trữ các giá trị vào một biến.

Ví dụ: lệnh "storeTitle" là một công cụ truy cập vì nó chỉ "đọc" tiêu đề trang và lưu nó trong một biến. Nó không tương tác với bất kỳ phần tử nào trên trang.

Khẳng định

Chúng là các lệnh xác minh xem một điều kiện nhất định có được đáp ứng hay không.

3 loại khẳng định

  • Khẳng định . Khi một lệnh "khẳng định" không thành công, quá trình kiểm tra sẽ bị dừng ngay lập tức.
  • Xác minh . Khi lệnh "xác minh" không thành công, Selenium IDE ghi lại lỗi này và tiếp tục thực hiện kiểm tra.
  • WaitFor . Trước khi thực hiện lệnh tiếp theo, các lệnh "waitFor" trước tiên sẽ đợi một điều kiện nào đó trở thành true.
    • Nếu điều kiện trở thành đúng trong thời gian chờ đợi, bước này sẽ vượt qua.
    • Nếu điều kiện không trở thành đúng, bước này không thành công. Lỗi được ghi lại và quá trình thực thi kiểm tra sẽ chuyển sang lệnh tiếp theo.
    • Theo mặc định, giá trị thời gian chờ được đặt thành 30 giây. Bạn có thể thay đổi điều này trong hộp thoại Tùy chọn Selenium IDE trong tab Chung.

Khẳng định so với Xác minh

Các lệnh chung

Chỉ huy Số tham số Sự miêu tả
mở 0 - 2

Mở trang bằng URL.

click / clickAndWait 1

Nhấp vào một phần tử được chỉ định.

type / typeKeys 2

Nhập một chuỗi ký tự.

verifyTitle / khẳng địnhTitle 1

So sánh tiêu đề trang thực tế với giá trị mong đợi.

verifyTextPresent 1

Kiểm tra xem một văn bản nhất định có được tìm thấy trong trang hay không.

verifyElementPresent 1

Kiểm tra sự hiện diện của một phần tử nhất định.

verifyTable 2

So sánh nội dung của một bảng với các giá trị mong đợi.

waitForPageToLoad 1

Tạm dừng thực thi cho đến khi trang được tải hoàn toàn.

waitForElementPresent 1

Tạm dừng thực thi cho đến khi phần tử được chỉ định xuất hiện.

Tạo tập lệnh theo cách thủ công với Firebug

Bây giờ, chúng ta sẽ tạo lại cùng một trường hợp thử nghiệm theo cách thủ công, bằng cách nhập các lệnh. Lần này, chúng ta sẽ cần sử dụng Firebug.

Bước 1
  • Mở Firefox và Selenium IDE.
  • Nhập URL cơ sở (http://demo.guru99.com/test/newtours/).
  • Nút ghi phải TẮT.
Bước 2: Nhấp vào dòng trống trên cùng trong Trình chỉnh sửa.

Nhập "mở" vào hộp văn bản Lệnh và nhấn Enter.

Bước 3
  • Điều hướng Firefox đến URL cơ sở của chúng tôi và kích hoạt Firebug
  • Trong ngăn Selenium IDE Editor, chọn dòng thứ hai (dòng bên dưới lệnh "mở") và tạo lệnh thứ hai bằng cách gõ "khẳng địnhTitle" trên hộp lệnh.
  • Hãy sử dụng tính năng tự động hoàn thành.
Bước 4
  • Trong Firebug, hãy mở rộng thẻ để hiển thị thẻ .</li> <li>Nhấp vào giá trị của thẻ <title> (là "Chào mừng: Chuyến tham quan Mercury") và dán nó vào trường Mục tiêu trong Trình chỉnh sửa.</li> </ul> </td> </tr> <tr> <td><strong>Bước 5</strong> <ul> <li>Để tạo lệnh thứ ba, hãy nhấp vào dòng trống thứ ba trong Trình chỉnh sửa và nhập "gõ" vào hộp văn bản Lệnh.</li> <li>Trong Firebug, nhấp vào nút "Kiểm tra".</li> </ul> </td> </tr> <tr> <td>Bấm vào hộp văn bản Tên người dùng. Lưu ý rằng Firebug tự động hiển thị cho bạn mã HTML cho phần tử đó.</td> </tr> <tr> <td><strong>Bước 6</strong> <p>Lưu ý rằng hộp văn bản Tên người dùng không có ID, nhưng nó có thuộc tính NAME. Do đó, chúng tôi sẽ sử dụng TÊN của nó làm công cụ định vị. Sao chép giá trị NAME và dán nó vào trường Target trong Selenium IDE.</p> <p>Vẫn trong hộp văn bản Target, tiền tố "userName" với "name =", cho biết rằng Selenium IDE nên nhắm mục tiêu một phần tử có thuộc tính NAME là "userName."</p> <p>Nhập "invalidUN" vào hộp văn bản Giá trị của Selenium IDE. Kịch bản thử nghiệm của bạn bây giờ sẽ giống như hình ảnh bên dưới. Chúng tôi đã thực hiện xong với lệnh thứ ba. Lưu ý: Thay vì không hợp lệUN, bạn có thể nhập bất kỳ chuỗi văn bản nào khác. Nhưng Selenium IDE phân biệt chữ hoa chữ thường và bạn nhập các giá trị / thuộc tính giống hệt như trong ứng dụng.</p> </td> </tr> <tr> <td><strong>Bước 7</strong> <ul> <li>Để tạo lệnh thứ tư, hãy nhập "gõ" vào hộp văn bản Lệnh.</li> <li>Một lần nữa, sử dụng nút "Kiểm tra" của Firebug để lấy bộ định vị cho hộp văn bản "Mật khẩu".</li> </ul> <ul> <li> <p>Dán thuộc tính NAME ("mật khẩu") vào trường Target và đặt tiền tố bằng "name ="</p> </li> <li> <p>Nhập "invalidPW" vào trường Giá trị trong Selenium IDE. Kịch bản thử nghiệm của bạn bây giờ sẽ giống như hình ảnh bên dưới.</p> </li> </ul> </td> </tr> <tr> <td><strong>Bước 8</strong> <ul> <li>Đối với lệnh thứ năm, gõ "clickAndWait" vào hộp văn bản Lệnh trong Selenium IDE.</li> <li>Sử dụng nút "Kiểm tra" của Firebug để lấy bộ định vị cho nút "Đăng nhập".</li> </ul> <ul> <li>Dán giá trị của thuộc tính NAME ("đăng nhập") vào hộp văn bản Target và đặt tiền tố bằng "name =".</li> <li>Kịch bản thử nghiệm của bạn bây giờ sẽ giống như hình ảnh bên dưới.</li> </ul> </td> </tr> </tbody> </table> <p><strong>Bước 9:</strong> Lưu trường hợp thử nghiệm theo cách tương tự như chúng ta đã làm trong phần trước.</p> <a id="menu-6"></a> <h2>Sử dụng nút Tìm</h2> <p><strong>Nút Tìm trong Selenium IDE được sử dụng để xác minh xem những gì chúng tôi đã đặt trong hộp văn bản Mục tiêu có thực sự là phần tử giao diện người dùng chính xác hay không.</strong></p> <p>Hãy để chúng tôi sử dụng trường hợp kiểm thử Invalid_login mà chúng tôi đã tạo trong các phần trước. Nhấp vào bất kỳ lệnh nào có mục Target, chẳng hạn như lệnh thứ ba.</p> <p>Bấm vào nút Tìm. Lưu ý rằng hộp văn bản Tên người dùng trong trang Mercury Tours sẽ được tô sáng trong một giây.</p> <p>Điều này chỉ ra rằng Selenium IDE đã có thể phát hiện và truy cập vào phần tử mong đợi một cách chính xác. Nếu nút Tìm đánh dấu một phần tử khác hoặc không có phần tử nào, thì chắc chắn có điều gì đó không ổn với tập lệnh của bạn.</p> <a id="menu-7"></a> <h2>Thực thi lệnh</h2> <p><strong>Điều này cho phép bạn thực hiện bất kỳ lệnh đơn lẻ nào mà không cần chạy toàn bộ trường hợp thử nghiệm</strong> . Chỉ cần nhấp vào dòng bạn muốn thực hiện và sau đó nhấp vào "Hành động> Thực hiện lệnh này" từ thanh menu hoặc chỉ cần nhấn "X" trên bàn phím của bạn.</p> <p><strong>Bước 1.</strong> Đảm bảo rằng trình duyệt của bạn đang ở trên trang chủ Mercury Tours. Nhấp vào lệnh bạn muốn thực hiện. Trong ví dụ này, hãy nhấp vào dòng "type | userName | invalidUN".</p> <p><strong>Bước 2.</strong> Nhấn "X" trên bàn phím của bạn.</p> <p><strong>Bước 3.</strong> Quan sát rằng hộp văn bản cho tên người dùng trở nên phổ biến với văn bản "invalidUN"</p> <p><strong>Việc thực thi các lệnh theo cách này phụ thuộc nhiều vào trang mà Firefox hiện đang hiển thị</strong> . Điều này có nghĩa là nếu bạn thử ví dụ trên với trang chủ Google được hiển thị thay vì Mercury Tours ', thì bước của bạn sẽ không thành công vì không có hộp văn bản có thuộc tính "userName" trong trang chủ của Google.</p> <a id="menu-8"></a> <h2>Điểm xuất phát</h2> <p><strong>Điểm bắt đầu là một chỉ báo cho Selenium IDE biết dòng nào sẽ bắt đầu thực thi</strong> . <strong>Phím tắt của nó là "S".</strong></p> <p>Trong ví dụ trên, quá trình phát lại sẽ bắt đầu trên dòng thứ ba (gõ | mật khẩu | không hợp lệPW). <strong>Bạn chỉ có thể có một điểm bắt đầu trong một tập lệnh thử nghiệm duy nhất.</strong></p> <p>Điểm bắt đầu tương tự như Execute Command ở chỗ chúng phụ thuộc vào trang được hiển thị hiện tại. Điểm bắt đầu sẽ không thành công nếu bạn đang ở trên trang sai.</p> <a id="menu-9"></a> <h2>Điểm ngắt</h2> <p>Điểm ngắt là các chỉ báo cho Selenium IDE biết nơi tự động tạm dừng kiểm tra. <strong>Phím tắt là "B".</strong></p> <p>Đánh dấu màu vàng có nghĩa là bước hiện tại đang chờ xử lý. Điều này chứng tỏ rằng Selenium IDE đã tạm dừng thực thi ở bước đó. <strong>Bạn có thể có nhiều điểm ngắt trong một trường hợp thử nghiệm.</strong></p> <a id="menu-10"></a> <h2>Bươc</h2> <p>Nó cho phép bạn thực hiện các lệnh tiếp theo lần lượt sau khi tạm dừng trường hợp thử nghiệm. Chúng ta hãy sử dụng kịch bản trong phần trước "Điểm ngắt".</p> <table> <tbody> <tr> <td width="50%"> </td> <td> <p><strong>Trước khi nhấp vào "Bước".</strong></p> <p>Trường hợp kiểm tra tạm dừng ở dòng "clickAndWait | đăng nhập".</p> </td> </tr> <tr> <td width="50%"> </td> <td> <p><strong>Sau khi nhấp vào "Bước".</strong></p> <p>Dòng "clickAndWait | login" được chạy và tạm dừng ở lệnh tiếp theo (verifyTitle | Sign-on: Mercury Tours).</p> <p>Lưu ý rằng dòng tiếp theo bị tạm dừng mặc dù không có điểm ngắt ở đó. Đây là mục đích chính của tính năng Bước - nó thực hiện các lệnh tiếp theo lần lượt để bạn có thêm thời gian kiểm tra kết quả sau mỗi bước.</p> </td> </tr> </tbody> </table> <a id="menu-11"></a> <h2>Những điều quan trọng cần lưu ý khi sử dụng các định dạng khác trong chế độ xem nguồn</h2> <p><strong>Selenium IDE chỉ hoạt động tốt với HTML - các định dạng khác vẫn đang ở chế độ thử nghiệm</strong> . Đó là <strong>KHÔNG nên</strong> để tạo hoặc chỉnh sửa các bài kiểm tra sử dụng các định dạng khác trong Source Xem vì vẫn còn rất nhiều công việc cần thiết để làm cho nó ổn định. Dưới đây là các lỗi đã biết kể từ phiên bản 1.9.1.</p> <ul> <li>Bạn sẽ không thể thực hiện phát lại hoặc chuyển trở lại Chế độ xem bảng trừ khi bạn hoàn nguyên về HTML.</li> <li>Cách duy nhất để thêm các lệnh một cách an toàn vào mã nguồn là ghi lại chúng.</li> <li>Khi bạn sửa đổi mã nguồn theo cách thủ công, tất cả mã nguồn sẽ bị mất khi bạn chuyển sang định dạng khác.</li> <li>Mặc dù bạn có thể lưu trường hợp thử nghiệm của mình trong khi ở Chế độ xem nguồn, Selenium IDE sẽ không thể mở nó.</li> </ul> <p><strong>Cách được khuyến nghị để chuyển đổi các bài kiểm tra Selenese là sử dụng tùy chọn "Export Test Case As…" trong menu Tệp chứ không phải qua Chế độ xem Nguồn.</strong></p> <a id="menu-12"></a> <h2>Tóm lược</h2> <ul> <li>Các kịch bản kiểm tra có thể được tạo bằng cách ghi lại hoặc nhập các lệnh và thông số theo cách thủ công.</li> <li>Khi tạo script theo cách thủ công, Firebug được sử dụng để lấy bộ định vị.</li> <li>Nút Tìm được sử dụng để kiểm tra xem lệnh có thể truy cập đúng phần tử hay không.</li> <li>Chế độ xem Bảng hiển thị một tập lệnh thử nghiệm ở dạng bảng trong khi Chế độ xem Nguồn hiển thị nó ở định dạng HTML.</li> <li>Việc thay đổi Chế độ xem nguồn sang định dạng không phải HTML vẫn còn đang thử nghiệm.</li> <li>Không sử dụng Chế độ xem nguồn trong việc tạo thử nghiệm ở các định dạng khác. Sử dụng các tính năng Xuất thay thế.</li> <li>Các thông số không được yêu cầu mọi lúc. Nó phụ thuộc vào lệnh.</li> <li>Có ba loại lệnh:</li> <ul> <li>Các hành động - tương tác trực tiếp với các phần tử trang</li> <li>Accessors - "đọc" một thuộc tính phần tử và lưu trữ nó trong một biến</li> <li>Khẳng định - so sánh một giá trị thực tế với một giá trị mong đợi</li> </ul> <li>Khẳng định có ba loại:</li> <ul> <li>Khẳng định - khi thất bại, các bước tiếp theo không còn được thực hiện nữa</li> <li>Xác minh - khi thất bại, các bước tiếp theo vẫn được thực hiện.</li> <li>WaitFor - vượt qua nếu điều kiện được chỉ định trở thành đúng trong khoảng thời gian chờ; nếu không, nó sẽ thất bại</li> </ul> <li>Các lệnh phổ biến nhất là:</li> <ul> <li>mở</li> <li>click / clickAndWait</li> <li>type / typeKeys</li> <li>verifyTitle / khẳng địnhTitle</li> <li>verifyTextPresent</li> <li>verifyElementPresent</li> <li>verifyTable</li> <li>waitForPageToLoad</li> <li>waitForElementPresent</li> </ul> </ul> </div> </article> <div id="container-5533149ee6411a5f99b370c693e87966"></div> </div> </div> </div> </div> </div> <aside class="col-lg-4 sidebar sidebar--right"> <div class="widget widget-popular-posts"> <h2 class="widget-title">Bài ViếT Phổ BiếN</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8003122-is" title=": là () - Thủ thuật CSS" rel="bookmark"><img src="https://cdn.css-code.org/9474011/_is_css-tricks.png.webp" loading="lazy" alt=": là () - Thủ thuật CSS" title=": là () - Thủ thuật CSS" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8003122-is" title=": là () - Thủ thuật CSS" rel="bookmark">: là () - Thủ thuật CSS 2025</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8003123-indeterminate" title=": vô định - Thủ thuật CSS" rel="bookmark"><img src="https://cdn.css-code.org/4074003/_indeterminate_css-tricks.png.webp" loading="lazy" alt=": vô định - Thủ thuật CSS" title=": vô định - Thủ thuật CSS" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8003123-indeterminate" title=": vô định - Thủ thuật CSS" rel="bookmark">: vô định - Thủ thuật CSS 2025</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8003124-lang" title=": lang () - Thủ thuật CSS" rel="bookmark"><img src="https://cdn.css-code.org/3632838/_lang_css-tricks.png.webp" loading="lazy" alt=": lang () - Thủ thuật CSS" title=": lang () - Thủ thuật CSS" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8003124-lang" title=": lang () - Thủ thuật CSS" rel="bookmark">: lang () - Thủ thuật CSS 2025</a></h3> </div> </div> </li> </ul> </div> <div class="widget widget-popular-posts"> <h2 class="widget-title">đánh giá tốt nhất trong tháng</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226568-stemming-and-lemmatization-with-python-nltk" title="Lập trình và bổ sung hóa với Python NLTK" rel="bookmark">Lập trình và bổ sung hóa với Python NLTK</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226569-tagging-problems-and-hidden-markov-model" title="Các vấn đề gắn thẻ và mô hình Markov ẩn" rel="bookmark">Các vấn đề gắn thẻ và mô hình Markov ẩn</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226570-word-embedding-tutorial-word2vec-using-gensim-example" title="Hướng dẫn Nhúng Word: word2vec sử dụng Gensim (VÍ DỤ)" rel="bookmark">Hướng dẫn Nhúng Word: word2vec sử dụng Gensim (VÍ DỤ)</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226572-how-to-install-numpy" title="Cách cài đặt NumPy" rel="bookmark">Cách cài đặt NumPy</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226573-seq2seq-sequence-to-sequence-model-with-pytorch" title="Mô hình Seq2seq (Sequence to Sequence) với PyTorch" rel="bookmark">Mô hình Seq2seq (Sequence to Sequence) với PyTorch</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226574-python-numpy-array-tutorial" title="Hướng dẫn sử dụng mảng Python Numpy" rel="bookmark">Hướng dẫn sử dụng mảng Python Numpy</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226576-numpy-reshape-and-numpy-flatten-in-python" title="Numpy.reshape () và numpy.flatten () trong Python" rel="bookmark">Numpy.reshape () và numpy.flatten () trong Python</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226577-numpy-hstack-and-numpy-vstack-in-python-with-example" title="Numpy.hstack () và numpy.vstack () trong Python với ví dụ" rel="bookmark">Numpy.hstack () và numpy.vstack () trong Python với ví dụ</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226578-numpy-zeros-in-python-numpy-ones-in-python-with-example" title="Numpy.zeros () bằng Python - numpy.ones () trong Python với Ví dụ" rel="bookmark">Numpy.zeros () bằng Python - numpy.ones () trong Python với Ví dụ</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226579-how-to-download-and-install-tensorflow-jupyter-windowsmac" title="Cách tải xuống & Cài đặt TensorFLow: Jupyter - Windows / Mac" rel="bookmark">Cách tải xuống & Cài đặt TensorFLow: Jupyter - Windows / Mac</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226580-numpy-linspace-and-numpy-logspace-in-python-with-example" title="Numpy.linspace () và numpy.logspace () trong Python với Ví dụ" rel="bookmark">Numpy.linspace () và numpy.logspace () trong Python với Ví dụ</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226581-numpy-asarray-in-python-with-example" title="Numpy.asarray () trong Python với Ví dụ" rel="bookmark">Numpy.asarray () trong Python với Ví dụ</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226582-np-arange-numpy-arange-function-in-python" title="Np.arange () - Hàm NumPy Arange trong Python" rel="bookmark">Np.arange () - Hàm NumPy Arange trong Python</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226583-indexing-and-slicing-numpy-arrays-in-python-with-example" title="Lập chỉ mục và cắt Mảng NumPy bằng Python với ví dụ" rel="bookmark">Lập chỉ mục và cắt Mảng NumPy bằng Python với ví dụ</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8226584-numpy-statistical-functions-with-example" title="Hàm thống kê NumPy với ví dụ" rel="bookmark">Hàm thống kê NumPy với ví dụ</a></h3> </div> </div> </li> </ul> </div> <div id="container-5533149ee6411a5f99b370c693e87966"></div> <div class="widget widget-popular-posts"> <h2 class="widget-title">Bài ViếT ĐầU</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8224625-sql-commands-dml-ddl-dcl-tcl-dql-with-query-example" title="Lệnh SQL: DML, DDL, DCL, TCL, DQL với ví dụ truy vấn" rel="bookmark"><img src="https://cdn.css-code.org/5443888/sql_commands_dml-_ddl-_dcl-_tcl-_dql_with_query_example.png.webp" loading="lazy" alt="Lệnh SQL: DML, DDL, DCL, TCL, DQL với ví dụ truy vấn" title="Lệnh SQL: DML, DDL, DCL, TCL, DQL với ví dụ truy vấn" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8224625-sql-commands-dml-ddl-dcl-tcl-dql-with-query-example" title="Lệnh SQL: DML, DDL, DCL, TCL, DQL với ví dụ truy vấn" rel="bookmark">Lệnh SQL: DML, DDL, DCL, TCL, DQL với ví dụ truy vấn 2025</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8224626-dbms-vs-rdbms-difference-between-dbms-and-rdbms" title="DBMS và RDBMS: Sự khác biệt giữa DBMS và RDBMS" rel="bookmark"><img src="https://cdn.css-code.org/3790777/dbms_vs_rdbms_difference_between_dbms_and_rdbms.png.webp" loading="lazy" alt="DBMS và RDBMS: Sự khác biệt giữa DBMS và RDBMS" title="DBMS và RDBMS: Sự khác biệt giữa DBMS và RDBMS" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8224626-dbms-vs-rdbms-difference-between-dbms-and-rdbms" title="DBMS và RDBMS: Sự khác biệt giữa DBMS và RDBMS" rel="bookmark">DBMS và RDBMS: Sự khác biệt giữa DBMS và RDBMS 2025</a></h3> </div> </div> </li><li class="post-list-small__item"> <div class="post-list-small__entry clearfix"> <div class="post-list-small__img-holder"> <div class="thumb-container thumb-100"><a href="/8224627-dbms-joins-inner-left-outer-theta-types-of-join-operations" title="Tham gia DBMS: Bên trong, Bên ngoài Bên trái, Các kiểu hoạt động kết hợp THETA" rel="bookmark"><img src="https://cdn.css-code.org/4220772/dbms_joins_inner-_left_outer-_theta_types_of_join_operations.png.webp" loading="lazy" alt="Tham gia DBMS: Bên trong, Bên ngoài Bên trái, Các kiểu hoạt động kết hợp THETA" title="Tham gia DBMS: Bên trong, Bên ngoài Bên trái, Các kiểu hoạt động kết hợp THETA" class="post-list-small__img--rounded" style="width:88px;height:88px" /></a></div> </div> <div class="post-list-small__body"> <h3 class="post-list-small__entry-title"><a href="/8224627-dbms-joins-inner-left-outer-theta-types-of-join-operations" title="Tham gia DBMS: Bên trong, Bên ngoài Bên trái, Các kiểu hoạt động kết hợp THETA" rel="bookmark">Tham gia DBMS: Bên trong, Bên ngoài Bên trái, Các kiểu hoạt động kết hợp THETA 2025</a></h3> </div> </div> </li> </ul> </div> </aside> </div> </div> <footer class="footer footer--dark"> <div class="container"> <div class="footer__widgets"> <div class="row"> <div class="col-lg-4"> <div class="widget"> <h2 class="widget-title">Bài ViếT Phổ BiếN</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222886-hp-alm-filter-conditions-find-replace-flags-history-and-send-mail" title="HP ALM: Điều kiện lọc, Tìm, Thay thế, Cờ, Lịch sử & Gửi thư" rel="bookmark">HP ALM: Điều kiện lọc, Tìm, Thay thế, Cờ, Lịch sử & Gửi thư</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222887-top-35-hp-alm-quality-center-interview-questions-and-answers" title="35 Câu hỏi Phỏng vấn HP ALM (Trung tâm Chất lượng) hàng đầu & Câu trả lời" rel="bookmark">35 Câu hỏi Phỏng vấn HP ALM (Trung tâm Chất lượng) hàng đầu & Câu trả lời</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222888-20-best-rpa-robotics-process-automation-tools-in-2021" title="20 công cụ RPA (Tự động hóa quy trình robot) tốt nhất năm 2021" rel="bookmark">20 công cụ RPA (Tự động hóa quy trình robot) tốt nhất năm 2021</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222889-top-40-rpa-interview-questions-and-answers" title="40 câu hỏi và câu trả lời phỏng vấn RPA hàng đầu" rel="bookmark">40 câu hỏi và câu trả lời phỏng vấn RPA hàng đầu</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222890-top-51-blue-prism-interview-questions-and-answers" title="51 câu hỏi và câu trả lời phỏng vấn theo lăng kính xanh" rel="bookmark">51 câu hỏi và câu trả lời phỏng vấn theo lăng kính xanh</a></h3> </div> </div> </li> </ul> </div> </div> <div class="col-lg-4"> <div class="widget"> <h2 class="widget-title">Editor Choice</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222747-how-to-record-and-playback-uftqtp-script" title="Cách ghi và phát lại tập lệnh UFT / QTP" rel="bookmark">Cách ghi và phát lại tập lệnh UFT / QTP</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222748-how-object-identification-works-in-qtpuft" title="Nhận dạng đối tượng hoạt động như thế nào trong QTP / UFT?" rel="bookmark">Nhận dạng đối tượng hoạt động như thế nào trong QTP / UFT?</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222749-how-to-use-qtpuft-ide" title="Cách sử dụng QTP / UFT IDE" rel="bookmark">Cách sử dụng QTP / UFT IDE</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222750-keyword-and-expert-view-in-qtpuft" title="Chế độ xem từ khóa và chuyên gia trong QTP / UFT" rel="bookmark">Chế độ xem từ khóa và chuyên gia trong QTP / UFT</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8222751-understand-systemutil-run-setsecure-set-type-qtpuft-examples" title="Hiểu ví dụ về SystemUtil.Run, SetSecure, Set, Type: QTP / UFT" rel="bookmark">Hiểu ví dụ về SystemUtil.Run, SetSecure, Set, Type: QTP / UFT</a></h3> </div> </div> </li> </ul> </div> </div> <div class="col-lg-4"> <div class="widget"> <h2 class="widget-title">Bài ViếT ĐầU</h2> <ul class="post-list-small"> <li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8226505-mongodb-primary-key-example-to-set-id-field-with-objectid" title="Khóa chính Mongodb: Ví dụ để đặt trường _id với ObjectId ()" rel="bookmark">Khóa chính Mongodb: Ví dụ để đặt trường _id với ObjectId ()</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8226506-mongodb-cursor-tutorial-learn-with-example" title="Hướng dẫn sử dụng con trỏ MongoDB: Học với EXAMPLE" rel="bookmark">Hướng dẫn sử dụng con trỏ MongoDB: Học với EXAMPLE</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8226507-mongodb-query-document-using-find-with-example" title="Tài liệu truy vấn MongoDB sử dụng find () với Ví dụ" rel="bookmark">Tài liệu truy vấn MongoDB sử dụng find () với Ví dụ</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8226508-mongodb-order-with-sort-and-limit-query-with-examples" title="Thứ tự MongoDB với Sort () & Giới hạn () Truy vấn với các ví dụ" rel="bookmark">Thứ tự MongoDB với Sort () & Giới hạn () Truy vấn với các ví dụ</a></h3> </div> </div> </li><li class="post-list-small__item"> <div> <div> <h3 class="post-list-small__entry-title"><a href="/8226509-mongodb-count-and-remove-functions-with-examples" title="Đếm MongoDB () & Loại bỏ () Các hàm với các ví dụ" rel="bookmark">Đếm MongoDB () & Loại bỏ () Các hàm với các ví dụ</a></h3> </div> </div> </li> </ul> </div> </div> </div> <p>© Copyright vi.css-code.org, 2025 Tháng BảY | <a href="https://vi.css-code.org/about-site" title="Về trang web">Về trang web</a> | <a href="https://vi.css-code.org/contacts" title="Liên lạc">Liên lạc</a> | <a href="https://vi.css-code.org/privacy-policy" title="Chính sách bảo mật">Chính sách bảo mật</a>. </p> </div> </div> </footer> <link href="https://css-code.org/template/css/style.min.css" rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" /> </body> </html>