Action

ADS

Hướng dẫn sử dụng Selenium WebDriver để tự động hóa trình duyệt craw data

 WebDriver  là ứng dụng tự động hóa trình duyệt, nó có chức năng điều khuyển, lấy nội dung , kết hợp Selenium để craw data cần giả lập hành động.

Hướng dẫn sử dụng Selenium WebDriver để tự động hóa trình duyệt craw data


Danh sách các phương thức thao tác với trình duyệt: 

Selenium WebDriver cung cấp nhiều phương pháp để tương tác với trình duyệt web và thực hiện các bài kiểm tra tự động. Dưới đây là danh sách các phương pháp WebDriver phổ biến, được phân loại theo chức năng của chúng, cùng với các giải thích ngắn gọn.

1. Phương pháp điều hướng

  • get($url): Tải trang web trong trình duyệt hiện tại.

    • Ví dụ:$webdriver->get('https://example.com');
  • getCurrentUrl(): Trả về URL hiện tại của trình duyệt.

    • Ví dụ:$currentUrl = $webdriver->getCurrentUrl();
  • getTitle(): Trả về tiêu đề của trang hiện tại.

    • Ví dụ:$title = $webdriver->getTitle();
  • navigate()->to($url): Một cách khác để điều hướng đến URL.

    • Ví dụ:$webdriver->navigate()->to('https://example.com');
  • navigate()->back(): Điều hướng đến trang trước trong lịch sử của trình duyệt.

    • Ví dụ:$webdriver->navigate()->back();
  • navigate()->forward(): Di chuyển đến trang tiếp theo trong lịch sử của trình duyệt.

    • Ví dụ:$webdriver->navigate()->forward();
  • navigate()->refresh(): Làm mới trang hiện tại.

    • Ví dụ:$webdriver->navigate()->refresh();

2. Phương pháp tương tác phần tử

  • findElement($by): Tìm một phần tử duy nhất theo vị trí được chỉ định.

    • Ví dụ:$element = $webdriver->findElement(LocatorStrategy::id, 'elementId');
  • findElements($by): Tìm tất cả các phần tử khớp.

    • Ví dụ:$elements = $webdriver->findElements(LocatorStrategy::className, 'className');
  • findElementById($id): Tìm một phần tử theo ID của nó.

    • Ví dụ:$element = $webdriver->findElementById('loginButton');
  • findElementByName($name): Tìm một phần tử theo tên của nó.

    • Ví dụ:$element = $webdriver->findElementByName('username');
  • findElementByClassName($class): Tìm một phần tử theo tên lớp của nó.

    • Ví dụ:$element = $webdriver->findElementByClassName('form-group');
  • findElementByTagName($tagName): Tìm một phần tử theo tên thẻ của nó.

    • Ví dụ:$element = $webdriver->findElementByTagName('button');
  • findElementByXPath($xpath): Tìm một phần tử bằng XPath.

    • Ví dụ:$element = $webdriver->findElementByXPath('//input[@type="text"]');
  • findElementByCssSelector($cssSelector): Tìm một phần tử bằng cách sử dụng bộ chọn CSS.

    • Ví dụ:$element = $webdriver->findElementByCssSelector('.login-form input[type="text"]');
  • findElementByLinkText($linkText): Tìm kiếm phần tử liên kết theo văn bản chính xác của nó.

    • Ví dụ:$element = $webdriver->findElementByLinkText('Click here');
  • findElementByPartialLinkText($partialLinkText): Tìm phần tử liên kết theo một phần văn bản.

    • Ví dụ:$element = $webdriver->findElementByPartialLinkText('Click');

3. Hành động của phần tử

  • click(): Nhấp vào một phần tử (ví dụ: nút, liên kết).

    • Ví dụ:$element->click();
  • sendKeys($keys): Nhập văn bản vào trường nhập liệu.

    • Ví dụ:$element->sendKeys(array('myUsername'));
  • clear(): Xóa nội dung của trường nhập liệu.

    • Ví dụ:$element->clear();
  • submit(): Gửi biểu mẫu (tương tự như nhấn nút gửi).

    • Ví dụ:$element->submit();
  • getText(): Truy xuất văn bản hiển thị của một phần tử.

    • Ví dụ:$text = $element->getText();
  • getAttribute($attributeName): Lấy giá trị của một thuộc tính cụ thể của một phần tử.

    • Ví dụ:$value = $element->getAttribute('href');
  • getCssValue($propertyName): Truy xuất giá trị tính toán của thuộc tính CSS của một phần tử.

    • Ví dụ:$color = $element->getCssValue('color');
  • isDisplayed(): Kiểm tra xem một phần tử có hiển thị trên trang hay không.

    • Ví dụ:$isVisible = $element->isDisplayed();
  • isEnabled(): Kiểm tra xem một phần tử có được bật hay không (ví dụ: xem một nút có thể nhấp được không).

    • Ví dụ:$isEnabled = $element->isEnabled();
  • isSelected(): Kiểm tra xem hộp kiểm hoặc nút radio có được chọn không.

    • Ví dụ:$isSelected = $element->isSelected();

4. Quản lý trình duyệt và cửa sổ

  • manage(): Trả về WebDriver.Optionsđối tượng cung cấp quyền truy cập vào nhiều lệnh quản lý trình duyệt khác nhau.

    • Ví dụ:$webdriver->manage()->timeouts()->implicitlyWait(10);
  • getWindowHandle(): Lấy địa chỉ của cửa sổ trình duyệt hiện tại.

    • Ví dụ:$windowHandle = $webdriver->getWindowHandle();
  • getWindowHandles(): Trả về tất cả các tay cầm cửa sổ đang mở.

    • Ví dụ:$windowHandles = $webdriver->getWindowHandles();
  • switchTo()->window($windowHandle): Chuyển ngữ cảnh sang một cửa sổ cụ thể.

    • Ví dụ:$webdriver->switchTo()->window($windowHandle);
  • switchTo()->frame($frame): Chuyển ngữ cảnh sang một iframe cụ thể.

    • Ví dụ:$webdriver->switchTo()->frame('frameName');
  • switchTo()->defaultContent(): Chuyển trở lại nội dung chính từ iframe.

    • Ví dụ:$webdriver->switchTo()->defaultContent();
  • maximize(): Phóng to cửa sổ trình duyệt.

    • Ví dụ:$webdriver->manage()->window()->maximize();
  • minimize(): Thu nhỏ cửa sổ trình duyệt (không phải lúc nào cũng có sẵn trên tất cả các trình điều khiển).

    • Ví dụ:$webdriver->manage()->window()->minimize();

5. Phương pháp tương tác trang

  • getPageSource(): Truy xuất mã nguồn HTML của trang hiện tại.

    • Ví dụ:$html = $webdriver->getPageSource();
  • takeScreenshot($filePath): Chụp ảnh màn hình trang hiện tại và lưu vào đường dẫn tệp đã cho.

    • Ví dụ:$webdriver->takeScreenshot('/path/to/screenshot.png');

6. Thời gian chờ và thời gian chờ

  • implicitlyWait($timeout): Đặt thời gian chờ mặc định để tìm phần tử.

    • Ví dụ:$webdriver->manage()->timeouts()->implicitlyWait(10);
  • setScriptTimeout($timeout): Đặt thời gian chờ cho các tập lệnh không đồng bộ.

    • Ví dụ:$webdriver->manage()->timeouts()->setScriptTimeout(10);
  • setPageLoadTimeout($timeout): Đặt thời gian chờ để tải trang.

    • Ví dụ:$webdriver->manage()->timeouts()->setPageLoadTimeout(10);
  • sleep($seconds): Tạm dừng thực thi trong một số giây cụ thể.

    • Ví dụ: sleep(2);// Tạm dừng trong 2 giây.

7. Quản lý Cookie

  • getCookies(): Truy xuất tất cả cookie cho tên miền hiện tại.

    • Ví dụ:$cookies = $webdriver->manage()->getCookies();
  • getCookieNamed($name): Truy xuất một cookie cụ thể theo tên của nó.

    • Ví dụ:$cookie = $webdriver->manage()->getCookieNamed('sessionId');
  • deleteCookieNamed($name): Xóa một cookie cụ thể theo tên của nó.

    • Ví dụ:$webdriver->manage()->deleteCookieNamed('sessionId');
  • deleteAllCookies(): Xóa tất cả cookie cho tên miền hiện tại.

    • Ví dụ:$webdriver->manage()->deleteAllCookies();
  • addCookie($cookie): Thêm cookie mới vào trình duyệt.

    • Ví dụ:$webdriver->manage()->addCookie(['name' => 'user', 'value' => '123']);

8. Thông tin phiên và trình duyệt

  • getCapabilities(): Truy xuất các khả năng của phiên WebDriver hiện tại (phiên bản trình duyệt, nền tảng, v.v.).

    • Ví dụ:$capabilities = $webdriver->getCapabilities();
  • getPlatformName(): Truy xuất tên nền tảng mà WebDriver đang chạy.

    • Ví dụ:$platform = $webdriver->getPlatformName();
  • getBrowserName(): Truy xuất tên trình duyệt mà WebDriver đang tương tác.

    • Ví dụ:$browser = $webdriver->getBrowserName();
  • getVersion(): Truy xuất phiên bản trình duyệt mà WebDriver đang tương tác.

    • Ví dụ:$version = $webdriver->getVersion();

9. Cảnh báo và cửa sổ bật lên

  • switchTo()->alert(): Chuyển sang cảnh báo hiện tại (ví dụ: hộp thoại bật lên).

    • Ví dụ:$alert = $webdriver->switchTo()->alert();
  • alert->accept(): Chấp nhận (nhấp vào OK) cảnh báo hiện tại.

    • Ví dụ:$alert->accept();
  • alert->dismiss(): Bỏ qua (nhấp vào Hủy) cảnh báo hiện tại.

    • Ví dụ:$alert->dismiss();
  • **`cảnh báo->

Danh sách các loại LocatorStrategy: 

Trong WebDriver (cụ thể là PHP WebDriver), LocatorStrategy đề cập đến LocatorStrategy

  1. LocatorStrategy::id

    • Nghĩa là : Xác định vị trí của một eid
    • Mô tả :id
    • Ví dụ :findElementBy(LocatorStrategy::id, 'username')
    • Trường hợp sử dụng : Xác định vị trí trường nhập tên người dùng của biểu mẫu đăng nhập theo idthuộc tính của nó.
  2. LocatorStrategy::name

    • Nghĩa là : Xác định vị trí của một phần tử bằngname
    • Mô tả : nameThuộc tính này thường được sử dụng trong các phần tử biểu mẫu (ví dụ: đầu vào, chọn) và có thể được sử dụng cho các phần tử không có giá trị duy nhấtid
    • Ví dụ :findElementBy(LocatorStrategy::name, 'email')
    • Trường hợp sử dụng : Tìm trường nhập email trong biểu mẫu idkhông có sẵn.
  3. LocatorStrategy::className

    • Nghĩa
    • Mô tả :class
    • Ví dụ :findElementBy(LocatorStrategy::className, 'button-class')
    • Trường hợp sử dụng : Nhấp vào nút có tên lớp cụ thể.
  4. LocatorStrategy::tagName

    • Nghĩa
    • Mô tả : Điều này hữu ích khi bạn muốn chọn các phần tử dựa trên loại của chúng (ví dụ: <div>, <input>,<button>
    • Ví dụ :findElementBy(LocatorStrategy::tagName, 'button')
    • Trường hợp sử dụng : Xác định vị trí một <button>phần tử trên trang.
  5. LocatorStrategy::linkText

    • Nghĩa là : Xác định vị trí của một phần tử liên kết (<a>
    • Sự miêu tả
    • Ví dụ :findElementBy(LocatorStrategy::linkText, 'Click here')
    • Trường hợp sử dụng : Nhấp vào liên kết có văn bản chính xác Click here.
  6. LocatorStrategy::partialLinkText

    • Nghĩa là : Xác định vị trí của một phần tử liên kết (<a>
    • Mô tả : Không giống như linkText, yêu cầu văn bản liên kết đầy đủ,partialLinkText
    • Ví dụ :findElementBy(LocatorStrategy::partialLinkText, 'Click')
    • Trường hợp sử dụng : Nhấp vào liên kết có một phần văn bản, chẳng hạn như "Nhấp vào đây" hoặc "Nhấp để tiếp tục".
  7. LocatorStrategy::xpath

    • Nghĩa
    • Sự miêu tả
    • Ví dụ :findElementBy(LocatorStrategy::xpath, '//*[@]')
    • Trường hợp sử dụng : Xác định vị trí của một phần tử dựa trên việc idsử dụng XPath hoặc tìm một phần tử có thuộc tính cụ thể.
  8. LocatorStrategy::cssSelector

    • Nghĩa
    • Sự miêu tả
    • Ví dụ :findElementBy(LocatorStrategy::cssSelector, '.my-class > input[type="text"]')
    • Trường hợp sử dụng : Tìm một phần tử có lớp hoặc cấu trúc CSS cụ thể.
  9. LocatorStrategy::partialLinkText

    • Nghĩa
    • Mô tả : Tương tự nhưlinkText
    • Ví dụ :findElementBy(LocatorStrategy::partialLinkText, 'Learn')
    • Trường hợp sử dụng : Nhấp vào liên kết có chứa văn bản hiển thị từ "Học".
  10. LocatorStrategy::attribute(sử dụng với XPath hoặc CSS Selector)

  • Ý nghĩa : Xác định vị trí một phần tử dựa trên các thuộc tính của nó, chẳng hạn như name, type, class,>Sự miêu tả
  • Ví dụ (XPath) :findElementBy(LocatorStrategy::xpath, '//*[@]')
  • Ví dụ (CSS) :findElementBy(LocatorStrategy::cssSelector, '[]')
  • Trường hợp sử dụng : Tìm một phần tử dựa trên>Tóm tắt các chiến lược định vị:
    Chiến lượcSự miêu tả
    LocatorStrategy::idTìm một phần tử theo idthuộc tính duy nhất của nó.
    LocatorStrategy::nameTìm một phần tử theo namethuộc tính của nó.
    LocatorStrategy::classNameTìm một phần tử theo tên lớp CSS của nó (có thể khớp với nhiều phần tử).
    LocatorStrategy::tagNameTìm một phần tử theo tên thẻ HTML của nó (ví dụ: , div, button) input.
    LocatorStrategy::linkTextTìm một liên kết ( <a>) theo văn bản hiển thị chính xác của nó.
    LocatorStrategy::partialLinkTextTìm liên kết ( <a>) bằng văn bản hiển thị một phần.
    LocatorStrategy::xpathTìm một phần tử bằng biểu thức XPath, cho phép thực hiện các truy vấn phức tạp dựa trên thuộc tính, văn bản và cấu trúc.
    LocatorStrategy::cssSelectorTìm một phần tử bằng cách sử dụng bộ chọn CSS, cho phép nhắm mục tiêu vào các phần tử dựa trên thuộc tính, lớp và phân cấp CSS.

    Khi nào nên sử dụng định vị nào:

    • Sử dụngid khi phần tử có tính duy nhất và nhất quánid
    • Sử dụngname khi một phần tử có namethuộc tính vàid
    • Sử dụngclassName
    • Sử dụngtagName cho các tìm kiếm chung theo loại phần tử, như định vị tất cả <input>hoặc<button>
    • Sử dụng linkTexthoặcpartialLinkText
    • Sử dụngxpath
    • Sử dụngcssSelector

    Bằng cách chọn đúng chiến lược định vị, bạn có thể xác định hiệu quả các yếu tố trong tác vụ tự động hóa web, cải thiện cả độ tin cậy và hiệu suất.

Danh sách các hành động trong WebDriver LocatorStrategy: 

Trong WebDriver, hành động là các phương pháp mô phỏng tương tác của người dùng với các thành phần web. Các hành động này thường được sử dụng sau khi định vị các thành phần có LocatorStrategy

Các loại LocatorStrategy hành động phổ biến:

  1. sendKeys

    • Ý nghĩa : Gửi các phím tắt đến một phần tử đầu vào (ví dụ: <input>,<textarea>
    • Mô tả :sendKeys
    • Ví dụ
    • Trường hợp sử dụng : Khi bạn cần nhập tên người dùng hoặc mật khẩu vào biểu mẫu đăng nhập.
  2. click

    • Nghĩa
    • Mô tả :click
    • Ví dụ
    • Trường hợp sử dụng : Khi bạn cần gửi biểu mẫu bằng cách nhấp vào nút gửi hoặc điều hướng đến trang khác bằng cách nhấp vào liên kết.
  3. clear

    • Nghĩa
    • Mô tả :clear
    • Ví dụ
    • Trường hợp sử dụng : Đặt lại trường nhập văn bản trước khi nhập giá trị mới (ví dụ: xóa hộp tìm kiếm).
  4. submit

    • Nghĩa
    • Mô tả : submitHành động mô phỏng việc gửi một phần tử biểu mẫu. Nó thường được sử dụng trên <form>các phần tử hoặc trên các phần tử đầu vào có kiểu submit.
    • Ví dụ :
    • Trường hợp sử dụng : Tự động gửi biểu mẫu mà không cần phải nhấp vào nút gửi một cách rõ ràng.
  5. getText

    • Ý nghĩa : Lấy nội dung văn bản của một phần tử.
    • Mô tả : getTextHành động này lấy văn bản hiển thị bên trong một phần tử, chẳng hạn như đoạn văn, nút hoặc tiêu đề.
    • Ví dụ :
    • Trường hợp sử dụng : Trích xuất thông tin từ nhãn, tiêu đề hoặc đoạn văn để xác minh hoặc xác thực.
  6. getAttribute

    • Ý nghĩa : Lấy giá trị của thuộc tính được chỉ định từ một phần tử.
    • Mô tả : getAttributeHành động này truy xuất giá trị thuộc tính của một phần tử (ví dụ: href, src, alt, value). Điều này có thể hữu ích khi bạn cần kiểm tra giá trị của các thuộc tính một cách động.
    • Ví dụ :
    • Trường hợp sử dụng : Xác minh xem liên kết có đúng URL hay nguồn hình ảnh có đúng không.
  7. isDisplayed

    • Ý nghĩa : Kiểm tra xem một phần tử có hiển thị trên trang hay không.
    • Mô tả : isDisplayedHành động này kiểm tra xem phần tử hiện có hiển thị trong khung nhìn hay không. Điều này hữu ích để xác nhận rằng phần tử không bị ẩn hoặc không hiển thị do một số điều kiện (như menu hoặc cảnh báo ẩn).
    • Ví dụ :
    • Trường hợp sử dụng : Xác minh xem có hiển thị cửa sổ bật lên hoặc thông báo lỗi trên trang hay không.
  8. isEnabled

    • Ý nghĩa : Kiểm tra xem một phần tử có được bật hay không.
    • Mô tả : isEnabledHành động này kiểm tra xem phần tử có ở trạng thái cho phép người dùng tương tác hay không (ví dụ: nút hoặc hộp kiểm đang hoạt động hoặc được bật).
    • Ví dụ :
    • Trường hợp sử dụng : Xác minh xem nút có được bật hay trường biểu mẫu có thể tương tác được không.
  9. isSelected

    • Ý nghĩa : Kiểm tra xem hộp kiểm hoặc nút radio có được chọn hay không.
    • Mô tả : isSelectedHành động này kiểm tra xem hộp kiểm hoặc nút radio có ở trạng thái được chọn hay không.
    • Ví dụ :
    • Trường hợp sử dụng : Kiểm tra xem hộp kiểm hoặc nút radio đã được chọn hay chưa.
  10. hover

    • Ý nghĩa : Mô phỏng việc di chuột qua một phần tử.
    • Mô tả : hoverHành động này mô phỏng việc di chuyển con trỏ chuột qua một phần tử mà không cần nhấp vào nó. Điều này thường được sử dụng để kích hoạt chú giải công cụ dựa trên di chuột hoặc hiển thị menu ẩn.
    • Ví dụ :
    • Trường hợp sử dụng : Di chuột qua danh sách thả xuống để hiển thị thêm tùy chọn.
  11. doubleClick

    • Ý nghĩa : Mô phỏng thao tác nhấp đúp vào một phần tử.
    • Mô tả : doubleClickHành động này mô phỏng hành động nhấn nhanh nút chuột hai lần liên tiếp vào một phần tử.
    • Ví dụ :
    • Trường hợp sử dụng : Tương tác với các thành phần phản hồi khi nhấp đúp (ví dụ: mở tệp trong trình khám phá tệp).
  12. dragAndDrop

    • Ý nghĩa : Mô phỏng thao tác kéo và thả một phần tử.
    • Mô tả : dragAndDropHành động này mô phỏng việc nhấp và giữ một phần tử, sau đó di chuyển nó đến vị trí mới và thả ra.
    • Ví dụ :
    • Trường hợp sử dụng : Mô phỏng chức năng kéo và thả trong các ứng dụng web.

Tóm tắt LocatorStrategycác hành động:

Hoạt độngSự miêu tảVí dụ về trường hợp sử dụng
sendKeysGửi các phím tắt đến một phần tử đầu vào (ví dụ: trường văn bản).Điền vào hộp văn bản hoặc trường tìm kiếm.
clickMô phỏng cú nhấp chuột vào một phần tử.Nhấp vào nút hoặc liên kết.
clearXóa nội dung của trường nhập liệu.Đặt lại trường văn bản trước khi nhập thông tin mới.
submitGửi biểu mẫu hoặc phần tử đầu vào.Tự động gửi biểu mẫu đăng nhập hoặc biểu mẫu tìm kiếm.
getTextLấy văn bản hiển thị bên trong một phần tử.Trích xuất tin nhắn từ thông báo hoặc nhãn.
getAttributeTruy xuất giá trị của thuộc tính được chỉ định của một phần tử.Xác minh giá trị của thuộc tính href, src, hoặc value.
isDisplayedKiểm tra xem một phần tử có hiển thị trên trang hay không.Kiểm tra xem hộp cảnh báo có hiển thị không.
isEnabledKiểm tra xem một phần tử có được bật hay không.Xác minh xem nút gửi có thể nhấp được hay trường biểu mẫu có được bật hay không.
isSelectedKiểm tra xem một phần tử (hộp kiểm hoặc nút radio) có được chọn hay không.Xác minh xem hộp kiểm hoặc nút radio có được chọn không.
hoverMô phỏng việc di chuột qua một phần tử.Di chuột qua menu thả xuống để hiển thị các tùy chọn ẩn

Những câu hỏi thường gặp

Làm thế nào để tải về?

Nếu bạn chưa tải file thông qua link rút gọn bao giờ, thì bạn có thể xem hướng dẫn để tải về.

Tôi có thể yêu cầu khóa học mà tôi muốn không?

Có nhé. Bạn vui lòng điền vào form yêu cầu khóa học này hoặc inbox quản trị viên để được update nhé!

Link hỏng?

Nếu bạn gặp vấn đề về liên kết ví dụ như tệp không tồn tại, không thể truy cập,...vui lòng báo cáo với quản trị viên.

Tôi không thể xem được video?

Vui lòng xem hướng dẫn nếu bạn chưa biết cách xem video tại pdusoft.

FaceBook Comments
Google Comments

0/Post a Comment/Comments


Không có nhận xét nào. Bạn hãy là người đầu tiên!

ads top

Bật/ Tắt Sidebar
Responsive Advertisement
/*cac trang khong phải page là hiện*/