Cách thực thi hàm JavaScript trong Selenium python

Như chúng ta đã biết thư viện Selenium python cung cấp các phương thức khác nhau để thực hiện các thao tác trên trình duyệt như click, sendkeys, gettext, v.v…

Nhưng có một cách khác để thực hiện các thao tác trên bằng cách chạy java script bên trong Selenium webdriver

Khi các phương thức selen không hoạt động, chúng ta có thể sử dụng javascript bên trong đối tượng webdriver của selen

Đối với điều này, Selenium cung cấp một phương thức

driver.execute_script["window.location = '//qavbox.github.io/demo/'"]
2

Chạy javascript bên trong trình duyệt

Mở trình duyệt> tải url> nhấp chuột phải vào kiểm tra> bảng điều khiển và chạy các tập lệnh java

và cùng đoạn script trên, chúng ta có thể chạy bằng Selenium như

driver.execute_script["return document.getElementById['username']

Bây giờ chúng ta đã thấy cách chạy tập lệnh java bằng Selenium webdriver, chúng ta sẽ khám phá thêm một số khả năng của tập lệnh java

Trong các chủ đề linh tinh về Selenium Python, chúng ta sẽ đề cập đến trình thực thi Javascript và một số ví dụ về Javascript Executor. Ngoài ra, chúng ta sẽ thảo luận về Tùy chọn Chrome trong Selenium.  

Javascript Executor và Tại sao chúng ta cần chúng

Ngoài Selenium, tất cả các thành phần trong trang web có thể được xác định bằng Mô hình đối tượng tài liệu do Javascript cung cấp. Do đó, Mô hình đối tượng tài liệu có thể truy cập tất cả các đối tượng trong trang web

Chúng tôi có thể theo dõi một phần tử và tìm tất cả các phương thức có sẵn trong DOM để truy cập các thuộc tính html cho phần tử đó. Trong tab Console, nếu chúng ta gõ tài liệu. tất cả các phương thức như getElementById, getElementsClassName, v.v. sẽ hiển thị dưới dạng đề xuất. Hình ảnh bên dưới hiển thị một số phương thức trong DOM

Do đó, Javascript DOM có thể hoạt động trên bất kỳ phần tử nào trên trang web giống như Selenium. Selenium có một phương thức để thực thi mã Javascript trong đó. Có một số trường hợp khi Selenium có thể không xác định được một phần tử và thực hiện hành động trên phần tử đó. Trong những tình huống này, chúng tôi có thể truy cập phần tử và thực hiện hành động trên phần tử đó với sự trợ giúp của DOM trong Javascript

Để trình diễn các ví dụ Javascript Executor, chúng tôi sẽ sử dụng ứng dụng có liên kết. https. //raulshetyacademy. com/angularpractice/

Bây giờ chúng ta hãy lấy văn bản đã nhập trong hộp chỉnh sửa Tên với sự trợ giúp của JavaScript Executor

Selenium hiển thị phương thức exec_script để thực thi các lệnh Javascript. Lệnh Javascript được truyền dưới dạng đối số cho phương thức. Để xác định hộp chỉnh sửa Tên, trước tiên chúng ta hãy theo dõi phần tử và phân tích mã html của nó

Bây giờ chúng ta sẽ chuyển sang tab Console và sẽ xác định phần tử với sự trợ giúp của các phương thức DOM. Để định vị hộp chỉnh sửa Tên, chúng ta có thể sử dụng thuộc tính tên có tên là giá trị. DOM do Javascript cung cấp sẽ xác định phần tử đó với sự trợ giúp của thuộc tính tên của nó bằng tài liệu phương thức. getElementsByName. Giá trị của thuộc tính name sẽ được truyền dưới dạng đối số cho phương thức. Ngoài ra, phương thức này trả về một tập hợp các nút có chỉ số bắt đầu là 0

Vì hộp chỉnh sửa Tên là thành phần phù hợp đầu tiên trên trang, chúng tôi sẽ đề cập đến số chỉ mục đó với [0]. Khi di chuột qua kết quả được trả về bởi tài liệu biểu thức. getElementsByName["name"][0] trong Bảng điều khiển, phần tử mong muốn của chúng ta sẽ được đánh dấu

Để có được giá trị được nhập bên trong hộp chỉnh sửa Tên, chúng ta sẽ sử dụng phương thức giá trị. Vì vậy, lệnh Javascript hoàn chỉnh sẽ là.  

tài liệu. getElementsByName["tên"][0]. giá trị

Toàn bộ biểu thức này sẽ được truyền dưới dạng đối số cho phương thức exec_script. Chúng tôi có thể xác thực giá trị của hộp chỉnh sửa trong Bảng điều khiển bằng cùng một lệnh Javascript. Vui lòng lưu ý kết quả xin chào được trả về trong Bảng điều khiển

Triển khai mã

từ Selenium nhập webdriver

trình điều khiển = webdriver. Chrome[executable_path="C. \\ chromedriver. exe"]

# khởi chạy URL trong trình duyệt

tài xế. nhận ["https. //raulshetyacademy. com/angularpractice/"]

# xác định phần tử với thuộc tính tên và văn bản đầu vào

tài xế. find_element_by_name["tên"]. send_keys["xin chào"]

# định vị phần tử bằng phương thức getElementsByName

# thực thi lệnh Javascript với phương thức exec_script

# truy xuất văn bản với phương thức giá trị từ hộp nhập liệu

in [trình điều khiển. exec_script['trả lại tài liệu. getElementsByName["tên"][0]. giá trị']]

đầu ra

Đầu ra hiển thị xin chào dưới dạng giá trị trong hộp chỉnh sửa Tên. Vì vậy, chúng tôi thấy rằng chúng tôi có thể sử dụng các phương thức DOM để làm việc trên bất kỳ phần tử nào trên trang web mà các phương thức Selenium có thể không hoạt động

Phần kết luận. Vì vậy, chúng tôi đã thảo luận về Javascript Executor là gì và cách sử dụng nó. Ngoài ra, chúng tôi đã thấy lý do tại sao chúng tôi cần một Javascript Executor. Để biết thêm chi tiết, bạn có thể tham khảo liên kết

https. // khóa học. rahulshetyacademy. com/courses/learning-selenium-automation-in-easy-python-language/lectures/13248415

Trong phần tiếp theo, chúng ta sẽ thảo luận về một số ví dụ về JavaScript Executor để thực hiện các thao tác trên web

Ví dụ về JavaScript Executor cho các hoạt động web khác nhau

Hãy thực hiện thao tác click vào link Shop xuất hiện trên ứng dụng có link. https. //raulshetyacademy. com/angularpractice/. Chúng ta sẽ thực hiện thao tác này với Javascript Executor

Có thể xảy ra tình huống khi chúng tôi tìm thấy một phần tử ẩn đằng sau một phần tử khác trên trang. Nếu chúng ta muốn nhấp vào một phần tử như vậy, Selenium sẽ đưa ra một ngoại lệ không thể nhấp vào phần tử hoặc một số phần tử khác được nhấp vào. Javascript Executor có thể được sử dụng để xử lý tình huống như vậy khi nó hoạt động trực tiếp ở cấp độ html bất kể giao diện người dùng của nó

Hãy để chúng tôi theo dõi phần tử và phân tích mã html của nó

Để nhấp vào liên kết Shop với sự trợ giúp của Javascript Executor, chúng ta sẽ sử dụng phương thức exec_script. Số lượng đối số và bộ định vị phần tử đích được truyền dưới dạng đối số cho phương thức. Để xác định phần tử mục tiêu đầu tiên, chúng ta phải chỉ định đối số [0]. Để trỏ đến bộ định vị phần tử đích thứ hai, chúng ta phải chỉ định đối số [1]. Bây giờ để thực hiện thao tác nhấp chuột, chúng ta phải áp dụng phương thức nhấp chuột trên các đối số

Vì vậy, lệnh Javascript hoàn chỉnh để nhấp vào bộ định vị phần tử đầu tiên sẽ là.  

đối số[0]. nhấp chuột[];

Triển khai mã

từ Selenium nhập webdriver

trình điều khiển = webdriver. Chrome[executable_path="C. \\ chromedriver. exe"]

# khởi chạy URL trong trình duyệt

tài xế. nhận ["https. //raulshetyacademy. com/angularpractice/"]

# xác định phần tử với thuộc tính tên và văn bản đầu vào

tài xế. find_element_by_name["tên"]. send_keys["xin chào"]

# định vị phần tử bằng phương thức getElementsByName

# thực thi lệnh Javascript với phương thức exec_script

# truy xuất văn bản với phương thức giá trị từ hộp nhập liệu

in [trình điều khiển. exec_script['trả lại tài liệu. getElementsByName["tên"][0]. giá trị']]

# xác định liên kết bằng bộ chọn css với biểu thức chính quy trong href

shopButton = trình điều khiển. find_element_by_css_selector["a[href*='shop']"]

# thực thi lệnh Javascript với phương thức exec_script

# thực hiện nhấp chuột có đối số[0]. nhấp chuột[]

tài xế. exec_script["đối số[0]. click[];",shopButton]

Tiếp theo, chúng ta hãy thảo luận về cách cuộn xuống cuối trang web với sự trợ giúp của Javascript trong cùng một ứng dụng

Xin lưu ý, mặc định Selenium không hỗ trợ tính năng cuộn xuống

Chúng ta có thể cuộn xuống bằng phương thức Javascript scrollTo. Tọa độ để cuộn theo chiều ngang dọc theo trục x tính bằng pixel và tọa độ để cuộn theo chiều dọc dọc theo trục y tính bằng pixel được truyền làm đối số cho phương thức. Để thực hiện chiều cao cuộn hoàn chỉnh dọc theo trục y, chúng tôi sẽ sử dụng tài liệu phương pháp Javascript. cơ thể người. chiều cao cuộn

Vì vậy, lệnh Javascript để thực hiện cuộn hoàn chỉnh từ trên xuống dưới sẽ là.  

cửa sổ. scrollTo[0,tài liệu. cơ thể người. scrollHeight];

Triển khai mã

từ Selenium nhập webdriver

trình điều khiển = webdriver. Chrome[executable_path="C. \\ chromedriver. exe"]

# khởi chạy URL trong trình duyệt

tài xế. nhận ["https. //raulshetyacademy. com/angularpractice/"]

# xác định phần tử với thuộc tính tên và văn bản đầu vào

tài xế. find_element_by_name["tên"]. send_keys["xin chào"]

# định vị phần tử bằng phương thức getElementsByName

# thực thi lệnh Javascript với phương thức exec_script

# truy xuất văn bản với phương thức giá trị từ hộp nhập liệu

in [trình điều khiển. exec_script['trả lại tài liệu. getElementsByName["tên"][0]. giá trị']]

# xác định liên kết bằng bộ chọn css với biểu thức chính quy trong href

shopButton = trình điều khiển. find_element_by_css_selector["a[href*='shop']"]

# thực thi lệnh Javascript với phương thức exec_script

# thực hiện nhấp chuột có đối số[0]. nhấp chuột[]

tài xế. exec_script["đối số[0]. click[];",shopButton]

# thực thi lệnh Javascript với phương thức exec_script

# thực hiện cuộn từ trên xuống dưới bằng phương thức scrollTo Javascript

tài xế. exec_script["cửa sổ. scrollTo[0,tài liệu. cơ thể người. scrollHeight];"]

Phần kết luận

Vì vậy, chúng tôi đã thảo luận về một số ví dụ về Trình thực thi JavaScript để thực hiện các thao tác trên web như nhấp, cuộn, v.v. Để biết thêm chi tiết, bạn có thể tham khảo liên kết

https. // khóa học. rahulshetyacademy. com/courses/learning-selenium-automation-in-easy-python-language/lectures/13248417

Trong phần tiếp theo, chúng ta sẽ thảo luận về các tùy chọn của Chrome và tầm quan trọng của chúng trong Selenium WebDriver

Tùy chọn Chrome và tầm quan trọng trong Selenium

Chúng ta sẽ khám phá nhiều loại Tùy chọn Chrome có sẵn và tầm quan trọng của chúng. Lớp ChromeOptions trong gói webdriver được sử dụng để đặt hướng dẫn và hành vi cho trình duyệt chrome khi gọi. Tiếp theo, chúng ta sẽ tạo một đối tượng cho lớp ChromeOptions. Với sự trợ giúp của đối tượng này, chúng ta có thể thêm tất cả các hành vi và kiến ​​thức cần thiết về cách trình duyệt sẽ hoạt động sau khi được gọi

chrome_options = webdriver. Tùy chọn Chrome[],

ở đây chrome_options là tên biến đối tượng

Tiếp theo, chúng ta sẽ sử dụng phương thức add_argument để đưa ra hướng dẫn cho trình duyệt. Hướng dẫn cần thiết được truyền dưới dạng đối số cho phương thức. Để mở trình duyệt ở chế độ phóng to, chúng ta cần chuyển giá trị --start-maximized làm đối số cho phương thức đó

Chúng ta có thể mở trình duyệt ở chế độ headless bằng cách chuyển giá trị headless làm đối số cho phương thức add_argument. Bằng cách không đầu, điều đó có nghĩa là quá trình thực thi trình duyệt diễn ra nhưng nó không hiển thị từ giao diện người dùng. Tính năng không đầu này trong trình duyệt rất phổ biến vì nó tiêu tốn ít tài nguyên hơn so với cách gọi trình duyệt thông thường

Một số trang web thường bị lỗi chứng chỉ mà chúng tôi phải chấp nhận và tiếp tục truy cập các trang web thực tế. Trong Selenium, chúng ta có thể đạt được điều này bằng cách chuyển giá trị --ignore-certificate-errors làm đối số cho phương thức add_argument có thể được truy cập bằng cách tạo đối tượng chrome_options từ lớp ChromeOptions

Có rất nhiều tùy chọn có sẵn có thể được thêm vào trình duyệt chrome.  

Tiếp theo, chúng ta phải cung cấp thông tin của đối tượng chrome_options cho lệnh gọi trình duyệt thực tế. Vì vậy, về cơ bản, chúng ta phải kết nối đối tượng chrome_options với đối tượng trình điều khiển. Đối với lệnh gọi trình duyệt trong chrome, chúng tôi chuyển executable_path làm một trong những đối số bắt buộc cho lớp Chrome. Bây giờ chúng ta sẽ chuyển một đối số tùy chọn khác là tùy chọn [với giá trị của nó được đặt thành đối tượng chrome_options] cho lớp Chrome

trình điều khiển = webdriver. Chrome[executable_path = "C. \\ chromedriver. exe",

tùy chọn = chrome_options]

Như vậy là chúng ta đã gửi các tùy chọn chrome đến bước gọi trình duyệt

Triển khai mã

từ Selenium nhập webdriver

# Lớp ChromeOptions để thêm tùy chọn trình duyệt chrome

chrome_options = webdriver. ChromeOptions[]

# thêm tùy chọn để mở trình duyệt được tối đa hóa bằng phương thức add_argument

chrome_options. add_argument["--start-maximized"]

# thêm tùy chọn để mở chế độ headless của trình duyệt với phương thức add_argument

chrome_options. add_argument["không đầu"]

# thêm tùy chọn chấp nhận lỗi chứng chỉ trình duyệt với add_argument

chrome_options. add_argument["--ignore-chứng chỉ-lỗi"]

# gọi trình duyệt chrome với tham số tùy chọn

trình điều khiển = webdriver. Chrome[executable_path = "C. \\ chromedriver. exe",

tùy chọn = chrome_options]

# khởi chạy một URL trong trình duyệt

tài xế. nhận ["https. //raulshetyacademy. com/angularpractice/"]

Phần kết luận

Vì vậy, chúng tôi đã thảo luận về cách thêm tùy chọn chrome và tầm quan trọng của chúng trong Selenium WebDriver. Để biết thêm chi tiết, bạn có thể tham khảo liên kết

https. // khóa học. rahulshetyacademy. com/courses/learning-selenium-automation-in-easy-python-language/lectures/13248420

Trong phần tiếp theo, chúng ta sẽ thảo luận về dự án thực hành từ đầu đến cuối với các phương thức hoàn chỉnh trong Selenium WebDriver

Làm cách nào để thực thi một hàm JavaScript trong Python?

Khai báo một hàm sử dụng định dạng JavaScript và đặt nó trong chuỗi nhiều dòng [""" hoặc ''']. Bạn có thể lưu trữ nó trong một biến gọi là js_add. Truyền biến hàm cho eval_js[] để dịch nó sang Python tương đương. Hiển thị kết quả bằng cách gọi hàm và chuyển hai số làm đối số

Làm cách nào để nhấp vào nút JavaScript trong Selenium Python?

Thực thi javascript ở mức phần tử. Trong quá trình này, chúng tôi sẽ xác định phần tử với sự trợ giúp của các phương thức trình điều khiển web như find_element_by_xpath hoặc find_element_by_id, v.v. Sau đó thực hiện hành động cần thiết trên phần tử đó như nhấp vào phần tử . Cuối cùng, phương thức exec_script[] được gọi.

Chúng tôi có thể thực thi JavaScript trên trình duyệt bằng Selenium không?

Trình quản trị web Selenium có thể thực thi Javascript . Sau khi tải một trang, bạn có thể thực thi bất kỳ javascript nào bạn muốn. Selenium phải được cài đặt webdriver để hoạt động. Tất cả những gì cần thiết để thực thi Javascript là gọi phương thức exec_script[js] trong đó js là mã javascript của bạn.

Python có thể chạy JavaScript không?

JS2PY hoạt động bằng cách dịch trực tiếp JavaScript sang Python . Nó chỉ ra rằng bạn có thể chạy JS trực tiếp từ mã Python mà không cần cài đặt các công cụ lớn bên ngoài như V8.

Chủ Đề