NỘI DUNG BÀI HỌC
Để 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.
Cái mình quan tâm là các đánh dấu Cam
- 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ụ:
driver.Url = ("https://anhtester.com");
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ụ:
driver.Quit();
Thực hành Bài tập 1
- Khởi chạy trình duyệt Chrome mới.
- Mở trang https://anhtester.com
- Lấy tên tiêu đề trang và độ dài tiêu đề
- In Tiêu đề Trang và Độ dài Tiêu đề trên Bảng điều khiển.
- Lấy URL trang và độ dài url trang
- Lấy nguồn trang (mã nguồn HTML) và độ dài nguồn trang
- Đó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
// 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
// Đ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
// Đặ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);
}
}
}
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#