Nội dung bài học

Sử dụng các hàm của IWebDriver trong Selenium: Close, Manage, SwitchTo, Title, Navigate, Quit, Dispose, PageSource, Url, WindowHandles,...

Làm thế nào để truy cập các phương thức của IWebDriver?

Để kiểm tra xem tất cả những hàm trong IWebDriver, hãy tạo một đối tượng trình điều khiển từ IWebDriver và nhấn dấu chấm (.) Nó sẽ liệt kê tất cả các phương thức của IWebDriver.

[Selenium C#] Bài 7: Sử dụng các hàm của IWebDriver trong Selenium C# | Anh Tester
Cái mình quan tâm là các đánh dấu Cam

[Selenium C#] Bài 7: Sử dụng các hàm của IWebDriver trong Selenium C# | Anh Tester
[Selenium C#] Bài 7: Sử dụng các hàm của IWebDriver trong Selenium C# | Anh Tester
[Selenium C#] Bài 7: Sử dụng các hàm của IWebDriver trong Selenium C# | Anh Tester
  • Method Name: Để truy cập bất kỳ phương thức nào của bất kỳ lớp nào, chúng ta cần tạo một đối tượng của lớp và sau đó tất cả các phương thức chung sẽ xuất hiện cho đối tượng.
  • Getter & Setter: Để lấy và đặt giá trị.
  • Return Type: Phương thức có thể trả về một giá trị hoặc không trả về (void). Nếu khoảng trống được đề cập sau phương thức, điều đó có nghĩa là phương thức không trả về giá trị nào. Và nếu nó đang trả về bất kỳ giá trị nào, thì nó phải hiển thị loại giá trị.
  • Method Description : Đây là một bản tóm tắt ngắn gọn về hoạt động của phương pháp.

Lệnh URL

string IWebDriver.Url {get; set;}  - Phương pháp này load một trang web mới trong cửa sổ trình duyệt hiện tại. Phương thức này lấy và đặt giá trị và có thể được sử dụng theo cả hai cách.

Lệnh - driver.Url = “appUrl”;  // Để mở Url

Lệnh - String Url = driver.Url;   // Để lấy Url đã mở

Trong đó appUrl là địa chỉ trang web để tải. Tốt nhất là sử dụng một URL đủ điều kiện.

Thí dụ:

 

Lệnh Title

string IWebDriver.Title {get;}  - Phương thức này tìm nạp Title của trang web. Không chấp nhận tham số và trả về giá trị Chuỗi.

Command - trình điều khiển.Title;

Vì kiểu trả về là giá trị String, đầu ra phải được lưu trữ trong đối tượng hoặc biến String.

Thí dụ:

String Title = driver.Title;

 

Lệnh PageSource

string IWebDriver.PageSource {get;}  - Phương thức này trả về Mã nguồn của trang. Không chấp nhận tham số và trả về giá trị Chuỗi.

Lệnh - trình điều khiển.PageSource;

Vì kiểu trả về là giá trị String, đầu ra phải được lưu trữ trong đối tượng / biến String.

Thí dụ:

String PageSource = driver.PageSource;

 

Lệnh Close

void IWebDriver.Close() - Phương thức này chỉ đóng cửa sổ hiện tại mà IWebDriver đang kiểm soát. Không chấp nhận gì như một tham số và không trả về gì.

Lệnh - trình điều khiển.Close();

Và nó sẽ thoát trình duyệt luôn nếu đó là cửa sổ cuối cùng hiện đang mở.

Thí dụ:

driver.Close();

 

Lệnh Quit

void IWebDriver.Quit()  - Phương thức này Đóng tất cả các cửa sổ do IWebDriver mở. Không chấp nhận gì như một tham số và không trả về gì.

Lệnh - driver.Quit();

Đóng mọi cửa sổ được liên kết.

Thí dụ:

 

Thực hành Bài tập 1

  1. Khởi chạy trình duyệt Chrome mới.
  2. Mở trang https://anhtester.com
  3. Lấy tên tiêu đề trang và độ dài tiêu đề
  4. In Tiêu đề Trang và Độ dài Tiêu đề trên Bảng điều khiển.
  5. Lấy URL trang và độ dài url trang
  6. Lấy nguồn trang (mã nguồn HTML) và độ dài nguồn trang
  7. Đóng Trình duyệt.


Code mẫu:

[Test]
        public void TestIWebDriver()
        {
            IWebDriver driver = new ChromeDriver();
 
            //Launch the Anh Tester Website
            driver.Url = "https://anhtester.com";
 
            // Storing Title name in String variable
            String Title = driver.Title;
 
            // Storing Title length in Int variable
            int TitleLength = driver.Title.Length;
 
            // Printing Title name on Console
            Console.WriteLine("Title of the page is : "+Title);
 
            // Printing Title length on console
            Console.WriteLine("Length of the Title is : " + TitleLength);
 
            // Storing URL in String variable
            String PageURL = driver.Url;
 
            // Storing URL length in Int variable
            int URLLength = PageURL.Length;
 
            // Printing URL on Console
            Console.WriteLine("URL of the page is : " + PageURL);
 
            // Printing URL length on console
            Console.WriteLine("Length of the URL is : " + URLLength);
 
            // Storing Page Source in String variable
            String PageSource = driver.PageSource;
 
            // Storing Page Source length in Int variable
            int PageSourceLength = driver.PageSource.Length;
 
            // Printing Page Source on console
            Console.WriteLine("Page Source of the page is : " + PageSource);
 
            // Printing Page SOurce length on console
            Console.WriteLine("Length of the Page Source is : " + PageSourceLength);
 
            //Closing browser
            driver.Quit();
        }


Các hàm khác

Initialize

Các cách khởi tạo Driver với các loại trình duyệt khác nhau và Import thư viện (using) tương ứng

// Chrome Driver
using OpenQA.Selenium.Chrome;
IWebDriver driver = new ChromeDriver();
// Firefox Webdriver
using OpenQA.Selenium.Firefox;
IWebDriver driver = new FirefoxDriver();
// PhantomJS
using OpenQA.Selenium.PhantomJS;
IWebDriver driver = new PhantomJSDriver();
// IE Driver
using OpenQA.Selenium.IE;
IWebDriver driver = new InternetExplorerDriver();
// Edge Driver
using OpenQA.Selenium.Edge;
IWebDriver driver = new EdgeDriver();
 

Basic Browser Operations

Các thao tác trình duyệt cơ bản
// Chuyển hướng đến 1 trang chỉ định    
driver.Navigate().GoToUrl("https://anhtester.com");

// Lấy tiêu đề của trang
string title = driver.Title;

// Lấy đường dẫn url hiện tại
string url = driver.Url;

// Lấy cái source html của trang hiện tại (dạng chuỗi)
string html = driver.PageSource;​

//Để đóng browser đang run. Nếu có 3 firefox đang được control bằng driver
//thì chỉ có cái firefox đang active được đóng thôi.
driver.Close();

//Để đóng tất cả các instance browser đang được control bằng driver.
driver.Quit();


Advanced Browser Operations

Các thao tác trình duyệt nâng cao

[Selenium C#] Bài 7: Sử dụng các hàm của IWebDriver trong Selenium C# | Anh Tester
// Điều hướng về lịch sử trang trước đó
driver.Navigate().Back();

// Làm mới trang hiện tại
driver.Navigate().Refresh();

// Điều hướng đến trang tiếp sau
driver.Navigate().Forward();

// Phóng hết cỡ trình duyệt theo full màn hình máy tính
driver.Manage().Window.Maximize();

// Thêm cookie mới với Key và Value chỉ định
Cookie cookie = new OpenQA.Selenium.Cookie("key", "value");
driver.Manage().Cookies.AddCookie(cookie);

// Lấy tất cả cookies của driver hiện tại
var cookies = this.driver.Manage().Cookies.AllCookies;

// Xóa một cookie theo tên
driver.Manage().Cookies.DeleteCookieNamed("CookieName");

// Xóa tất cả các cookies
driver.Manage().Cookies.DeleteAllCookies();

// Chuyển sang khung hiển thị trên trình duyệt được chỉ định các kiểu sau:
driver.SwitchTo().Frame(1); //khung hiển thị đầu
driver.SwitchTo().Frame("frameName"); //khung hiển thị theo tên
IWebElement element = this.driver.FindElement(By.Id("id"));
driver.SwitchTo().Frame(element); //khung hiển thị chứa element có ID chỉ định

// Chuyển sang khung hiển thị trên trình duyệt hiện tại
driver.SwitchTo().DefaultContent();​

// Chuyển tới lớp hiển thị sau cùng (cửa sổ hiện tại)
driver.SwitchTo().Window(driver.WindowHandles.Last());


Advanced Wait Configurations

Các thao tác tùy chỉnh thời gian chờ

// Đặt thời gian chờ tải trang mặc định (đơn vị giây)
driver.Manage().Timeouts().SetPageLoadTimeout(new TimeSpan(10));

// Đặt thời gian chời ngầm định cho tất cả các element (đơn vị Giây)
//Ví dụ thiết lập 30 giây cho tất cả
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);

 

Code nào:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Remote;

using SeleniumCSharp.Initialize;

namespace SeleniumCSharp.Bai7_IWebDriver
{
    public class Buoi7_IWebDriver : Init_Program {

        [Test]
        public void TestIWebDriver() {
            
            //Launch the Anh Tester Website
            driver.Url = "https://anhtester.com";

            // Storing Title name in String variable
            String Title = driver.Title;

            // Storing Title length in Int variable
            int TitleLength = driver.Title.Length;

            // Printing Title name on Console
            Console.WriteLine("Title of the page is : " + Title);

            // Printing Title length on console
            Console.WriteLine("Length of the Title is : " + TitleLength);

            // Storing URL in String variable
            String PageURL = driver.Url;

            // Storing URL length in Int variable
            int URLLength = PageURL.Length;

            // Printing URL on Console
            Console.WriteLine("URL of the page is : " + PageURL);

            // Printing URL length on console
            Console.WriteLine("Length of the URL is : " + URLLength);

            // Storing Page Source in String variable
            String PageSource = driver.PageSource;

            // Storing Page Source length in Int variable
            int PageSourceLength = driver.PageSource.Length;

            // Printing Page Source on console
            Console.WriteLine("Page Source of the page is : " + PageSource);

            // Printing Page SOurce length on console
            Console.WriteLine("Length of the Page Source is : " + PageSourceLength);

            //Closing browser
            driver.Quit();
        }

        [Test]
        public void BasicBrowser()
        {
            
            driver.Navigate().GoToUrl("https://anhtester.com");

            // Lấy tiêu đề của trang
            string title = driver.Title;

            // Lấy đường dẫn url hiện tại
            string url = driver.Url;

            // Lấy cái source html của trang hiện tại (dạng chuỗi)
            //string html = driver.PageSource;

            Console.WriteLine(title);
            Console.WriteLine(url);
            //Console.WriteLine(html);
            driver.FindElement(By.XPath("//a[@id='btn-login']")).Click();
            Thread.Sleep(2000);
            // Điều hướng về lịch sử trang trước đó
            driver.Navigate().Back();
            Thread.Sleep(2000);
            // Làm mới trang hiện tại
            driver.Navigate().Refresh();
            Thread.Sleep(2000);
            // Điều hướng đến trang tiếp sau
            driver.Navigate().Forward();

            Thread.Sleep(3000);
        }

        [Test]
        public void AdvancedBrowser_Cookies()
        {

            driver.Navigate().GoToUrl("https://anhtester.com");

            //driver.FindElement(By.XPath("//a[@id='btn-login']")).Click();
            Thread.Sleep(2000);
            //driver.Manage().Window.FullScreen();

            // Thêm cookie mới với Key và Value chỉ định
            var cookie1 = new Cookie("hoang", "Ngáo");
            driver.Manage().Cookies.AddCookie(cookie1);

            driver.Manage().Cookies.AddCookie(new Cookie("test1", "cookie1"));
            var cookie2 = new Cookie("test2", "cookie2");
            driver.Manage().Cookies.AddCookie(cookie2);

            Console.WriteLine("Đã thêm Cookies");
            // Lấy tất cả cookies của driver hiện tại
            var cookies = this.driver.Manage().Cookies.AllCookies;
            Console.Write("Đã lấy ra Cookie là: ");
            Console.WriteLine(cookies.Count);

            //Xóa Cookie1
            driver.Manage().Cookies.DeleteCookieNamed("hoang");

            //Get lại
            var cookieDeleted = this.driver.Manage().Cookies.AllCookies;
            Console.WriteLine("Số cookies còn lại: "+cookieDeleted.Count);

            Thread.Sleep(3000);
        }

        [Test]
        public void AdvancedBrowser_Frames()
        {

            driver.Navigate().GoToUrl("http://the-internet.herokuapp.com/nested_frames");

            //driver.FindElement(By.XPath("//a[@id='btn-login']")).Click();
            Thread.Sleep(1000);
            driver.SwitchTo().ParentFrame();
            Console.WriteLine("Đã tới Frame Đầu tiên");
            
            driver.SwitchTo().Frame("frame-top");
            Console.WriteLine("Đã tới Frame Top");
            //driver.SwitchTo().Frame("frameset-middle");
            //Console.WriteLine("Đã tới frameset-middle");
            driver.SwitchTo().Frame("frame-middle");
            Console.WriteLine("Đã tới Frame Middle");
            string middleText = driver.FindElement(By.XPath("//div[@id='content']")).Text;
            Console.WriteLine(middleText);

            driver.Navigate().GoToUrl("https://devforum.info");

            Thread.Sleep(1000);
        }
    }
}

 

An build thêm cái website này hỗ trợ các bạn chạy auto test nè:

https://demo.anhtester.com/


Trên đây là các lệnh cơ bản của IWebDriver hỗ trợ trong Selenium C#.


==> Tìm hiểu thêm: Các lệnh truy vấn trong Selenium WebDriver C#

Cộng đồng Automation Testing Việt Nam

🌱 Facebook Fanpage: Anh Tester
🌱 Telegram
Automation Testing:   Cộng đồng Automation Testing
🌱 
Facebook Group Automation: Cộng đồng Automation Testing Việt Nam
🌱 Telegram
Manual Testing:   Cộng đồng Manual Testing
🌱 
Facebook Group Manual: Cộng đồng Manual Testing Việt Nam

  • Anh Tester

    Đường dẫu khó chân vẫn cần bước đi
    Đời dẫu khổ tâm vẫn cần nghĩ thấu


Cộng đồng Automation Testing Việt Nam:

🌱 Telegram Automation Testing:   Cộng đồng Automation Testing
🌱 
Facebook Group Automation: Cộng đồng Automation Testing Việt Nam
🌱 
Facebook Fanpage: Cộng đồng Automation Testing Việt Nam - Selenium
🌱 Telegram
Manual Testing:   Cộng đồng Manual Testing
🌱 
Facebook Group Manual: Cộng đồng Manual Testing Việt Nam

Chia sẻ kiến thức lên trang

Bạn có thể đăng bài để chia sẻ kiến thức, bài viết của chính bạn lên trang Anh Tester Blog

Danh sách bài học