Hướng dẫn selenium test cases for login page python - các trường hợp kiểm tra selen cho python trang đăng nhập

Blog này cho thấy việc sử dụng các kỹ thuật tự động hóa web bằng Selenium và Python trên Google Chrome. Hướng dẫn này sẽ giúp tự động hóa hành động đăng ký người dùng trên BrowSerstack.

Trước khi bắt đầu với trường hợp thử nghiệm, cần phải có cảm giác về selenium là gì và cách thức hoạt động của nó.

Giới thiệu về selen

Selenium là một công cụ cho phép các nhà phát triển tự động hóa hoạt động của trình duyệt web chỉ với một vài dòng mã trên nhiều nền tảng. Không thể kiểm tra phần mềm hệ sinh thái, nó cho phép người dùng sử dụng các trang web khác nhau và mô phỏng hành vi của người dùng cuối ở một mức độ lớn.

Một số điều có thể được thực hiện với selen bao gồm, nhưng không giới hạn ở:

  • Nhấp vào nút
  • Thực hiện nhấp chuột
  • Nhập văn bản
  • Trích xuất văn bản
  • Truy cập cookie
  • Nhấn phím

Điều kiện tiên quyết - Quy trình thiết lập ban đầu

Trước khi người dùng bắt đầu viết mã, các bước sau đây là cần thiết để thiết lập Selenium và Python:

Bước #1 - Cài đặt Python 3.7 Install Python 3.7

brew install python

Bước #2 - Cài đặt Google Chrome Install Google Chrome

Mô -đun selen cần một webdriver để bắt đầu chơi với các trình duyệt. Các trình duyệt được hỗ trợ là:

  • Trình duyệt Chrome
  • Firefox
  • trình duyệt web IE
  • Cuộc đi săn
  • Opera
  • Phantomjs (vô hình)

Bước #3 - Đối với Google Chrome, cài đặt Chromedriver từ Brew hoặc từ đây. For Google Chrome, install ChromeDriver from brew or from here.

brew cask install chromedriver

Bước #4 - Cài đặt gói selen bằng PIP. Install the Selenium package using pip.

pip install selenium

Kiểm tra demo: Cách mở trang web trên trình duyệt Chrome

Sau khi thiết lập môi trường selen hoàn tất, hãy chạy thử nghiệm cơ bản bằng Selenium Python. Mở Trình soạn thảo văn bản/IDE ưa thích của bạn và nhập các mục sau:

from selenium.webdriver import Chrome

browser = Chrome()
browser.get('https://www.browserstack.com')
print(browser.title)
browser.close()

Điều này mở trình duyệt Chrome, điều hướng đến https://www.browserstack.com và trích xuất tiêu đề bằng các phương thức có sẵn trên đối tượng trình duyệt mới được Minted của chúng tôi. Bây giờ người dùng có thể truy vấn DOM bằng các phương thức khác nhau được xác định trong đối tượng Trình duyệt.

Tuy nhiên, câu hỏi vẫn còn: Làm thế nào người dùng sẽ biết truy vấn?

Hướng dẫn selenium test cases for login page python - các trường hợp kiểm tra selen cho python trang đăng nhập

Trả lời điều này bằng cách mở trình duyệt web và sử dụng công cụ nhà phát triển để kiểm tra nội dung trên trang web. Hãy để nói rằng người dùng dự định tìm kiếm nút bắt đầu miễn phí & NBSP; trên trang chủ của BrowSerstack và nhấp vào nó để nó chuyển hướng đến trang tiếp theo. Bằng cách kiểm tra trang chủ Thêm các dòng này sau cuộc gọi phương thức GET.Get started free” button on the BrowserStack home page and click on it so that it redirects to the next page. By inspecting the BrowserStack home page, one will see that the button has the id attribute signupModalButton. Add these lines after the get method call.

button = browser.find_element_by_id('signupModalButton')
button.click()

Bây giờ, mọi thứ dường như đang hoạt động. Người dùng có thể xem trang mới sau khi nhấp vào nút.

Hướng dẫn selenium test cases for login page python - các trường hợp kiểm tra selen cho python trang đăng nhập

Học cách tự động hóa các hành động liên quan đến trình duyệt

Thử nghiệm trên đã xác nhận rằng các trình duyệt có thể được tự động hóa bằng Python. Bây giờ, người ta có thể tự động hóa quá trình đăng ký như một người dùng mới và mô phỏng trải nghiệm người dùng. Để bắt đầu, điều hướng đến https://www.browserstack.com/users/sign_up and bắt đầu khám phá các công cụ phát triển trình duyệt.

Người ta có thể xác định duy nhất trường tên bằng cách sử dụng id user_full_name. Thêm các dòng sau nút.Click ().user_full_name. Add these lines after button.click().

username = browser.find_element_by_id('user_full_name')
username.send_keys('John Doe')

Người dùng sẽ có thể xem tên trong trường đầu tiên của trang đăng ký.

Nhìn lại trình duyệt, người dùng sẽ thấy rằng mỗi trường có thể được xác định duy nhất bằng ID. Bây giờ, họ có thể muốn điền vào tất cả các chi tiết bằng cách tái lập các biến của họ như họ đã làm một phút trước. Tuy nhiên, điều này có thể yêu cầu một bước bổ sung.

Một số trang web, bao gồm Browserstack, đã cho phép Recaptcha xác định bot và tránh lạm dụng trên nền tảng của họ. Vì vậy, khi các tập lệnh như vậy được sử dụng trên trang web của họ, người dùng được công nhận là bot, điều này kích hoạt recaptcha. Điều này có nghĩa là người dùng phải vượt qua giai đoạn xác minh bổ sung liên quan đến việc xác định hình ảnh của các đối tượng cụ thể.

Thật không may, không có cách nào xung quanh lớp xác minh này, vì vậy điều này thêm độ trễ là 1-2 giây. Ngoài ra, trong khi điền dữ liệu vào trường văn bản, hãy nhập các ký tự với một số độ trễ thay vì điền vào trường văn bản trong một giây.

Tạo một hàm sẽ lấp đầy trường văn bản bằng một ký tự và thêm độ trễ 0,3 giây để bắt chước hành vi của con người. Ở đây, thay thế send_keys bằng slow_typing.send_keys with slow_typing.

def slow_typing(element, text):
   for character in text: 
      element.send_keys(character)
      time.sleep(0.3)

Thêm một tạm dừng ngẫu nhiên để tránh được phát hiện dưới dạng bot. Đáng chú ý, trong trình duyệt Chrome, có một hồ sơ mặc định sẽ được sử dụng trong trình diễn này để bắt chước hành vi của một người đang truy cập trang web. Kịch bản cuối cùng sẽ trông như thế này:

from selenium.webdriver import Chrome, ChromeOptions
import time

EMAIL_ID = ""

def slow_typing(element, text):
   for character in text:
      element.send_keys(character)
      time.sleep(0.3)

# Visit chrome://version/ and copy profile path in place of ''
options = ChromeOptions().add_argument("--user-data-dir=")

browser = Chrome(chrome_options=options)
browser.get('https://www.browserstack.com')

time.sleep(2)

# to accept cookie notification so that it doesn't interfere
cookie_cta = browser.find_element_by_id('accept-cookie-notification')
cookie_cta.click()

# Navigate to Signup Page
button = browser.find_element_by_id('signupModalButton')
button.click()

time.sleep(2)

# Fill user's full name
username = browser.find_element_by_id('user_fudll_name')
# username.send_keys('John Doe')
slow_typing(username, 'John Doe')

time.sleep(1)
# Fill user's email ID
email = browser.find_element_by_id('user_email_login')
slow_typing(email, EMAIL_ID)

time.sleep(2)
# Fill user's password
password = browser.find_element_by_id('user_password')

# Reads password from a text file because
# it's silly to save the password in a script.
with open('password.txt', 'r') as myfile:
       Password = myfile.read().replace('\n', '')
slow_typing(password, Password)

time.sleep(1)
# click on Terms and Conditions
toc = browser.find_element_by_name('terms_and_conditions')
toc.click()

# click on signup page
signupbutton = browser.find_element_by_id('user_submit')
signupbutton.click()

time.sleep(20)

browser.close()

Khám phá trang đăng ký

Bây giờ, quá trình đăng ký đã được tự động hóa, khám phá các trường hợp góc. Hãy nói rằng nếu người dùng nhấp vào nút Đăng ký mà không điền dữ liệu trong trường văn bản, họ sẽ nhận được thông báo lỗi.

Nếu người dùng muốn xác minh rằng tất cả các trường đều có dấu hiệu đúng về lỗi và thông báo lỗi phù hợp, họ có thể sử dụng selenium để tự động hóa quy trình.

Quay trở lại bảng điều khiển nhà phát triển trình duyệt và tìm kiếm cách các thông báo lỗi đang được điền cũng như cách UI thay đổi.

Hướng dẫn selenium test cases for login page python - các trường hợp kiểm tra selen cho python trang đăng nhập

Để trống Biểu mẫu đăng ký và nhấp vào nút Đăng ký. Điều này cho thấy một lớp Div được điền với khoảng thời gian với một thông báo lỗi trong đó. Ngoài ra, tất cả các trường văn bản có màu đường viền màu đỏ, vì vậy hãy sử dụng màu và thông điệp này để xác thực hành vi biểu mẫu.

Để đạt được điều này, hãy tìm thuộc tính CSS và nội dung HTML đã thay đổi sau khi người dùng nhấp vào nút Đăng ký. Người ta có thể truy vấn bất kỳ thuộc tính CSS nào của một phần tử bằng phương thức value_of_css_property.value_of_css_property method.

Dưới đây là đoạn mã ví dụ để xác minh màu đường viền của trường văn bản:

username = browser.find_element_by_id('user_full_name')
if "error" in username.get_attribute('outerHTML'):
   obtained_color = username.value_of_css_property('border-bottom-color')
   if not check_color(obtained_color, "rgba(222, 20, 33, 1)"):
      print(f"expected color is {EXPECTED_COLOR} and got {obtained_color}")

Ngoài ra, để trích xuất nội dung từ khoảng thời gian, sử dụng phương pháp get_attribution. Đầu tiên, tìm tất cả các yếu tố có lớp MSG-Body và sau đó sử dụng phương thức GET_Attribution để trích xuất thông báo trong khoảng thời gian.get_attribute method. First, find all elements which have class msg-body and then use the get_attribute method to extract the message in the span.

error_messages = ["At least 3 characters", "Invalid Email", "At least 6 characters"]
message_body_html_elements = browser.find_elements_by_class_name('msg-body')
for msg in message_body_html_elements:
   error_msg = msg.get_attribute('innerHTML').split("span")[1][1:-2]
   if error_msg not in error_messages:
      print(f"{msg.get_attribute('outerHTML')} is missing error message")

Bây giờ, thêm các xác nhận này cho tất cả các yếu tố trong biểu mẫu đăng ký và chuyển đổi nó thành một tập lệnh. Kịch bản cuối cùng là bên dưới:

brew cask install chromedriver
0

Cách xây dựng một lớp học trong Selenium WebDriver & Python

Vì cùng một đoạn mã đang được viết nhiều lần, nên việc xây dựng một lớp cho trình thu thập thông tin đơn giản này là khôn ngoan hơn. Một lớp, trong trường hợp này, những điều sau đây:

  • Khởi tạo trình duyệt và điều hướng đến BrowSerstack
  • Đăng ký với tư cách là người dùng
  • Xác thực hình thức đăng ký

Để biết thêm về WebDriver, hãy đọc hướng dẫn Selenium WebDriver này.

Ở đây, toàn bộ mã cơ bản của nó:

brew cask install chromedriver
1

Sự kết luận

Thí nghiệm được mô tả ở trên chỉ là một cái nhìn thoáng qua về những gì người ta có thể làm với selen. Kết hợp nó với Python và có thể tự động hóa tất cả các hành động trên trình duyệt web. Trong số những thứ khác, người ta có thể viết các tập lệnh Python để tạo các bot gửi cảnh báo khi tìm thấy lỗi trên một trang web. Sử dụng toàn bộ tiềm năng của Selenium và Python có thể đi một chặng đường dài trong việc trao quyền cho các nhà phát triển và QA để khám phá, tự động hóa và xem xét chức năng trình duyệt web.

Làm cách nào để đăng nhập vào trang web của mình bằng selenium?

Đăng nhập Tự động hóa bằng Selenium WebDriver..
Bước 1: Khởi chạy trang web Lambdatest. (...
Bước 2: Nhấp vào Đăng nhập ..
Bước 3: Nhập email và mật khẩu hợp lệ ..
Bước 4: Nhấp vào nút Đăng nhập ..
Bước 5: Xác minh tiêu đề của trang để đảm bảo rằng người dùng đã đăng nhập thành công vào trang web ..
Chrome..
Firefox..

Làm thế nào để bạn tự động hóa một đăng nhập trong Python?

Tìm URL của trang đăng nhập mà bạn muốn đăng nhập. Cung cấp vị trí Trình điều khiển Chrome có thể thực thi cho Selenium WebDriver để truy cập trình duyệt Chrome.Cuối cùng, hãy tìm tên hoặc ID hoặc bộ chọn CSS hoặc CSS của tên người dùng và mật khẩu bằng cách nhấp chuột phải kiểm tra tên người dùng và mật khẩu.

Làm thế nào để bạn viết các trường hợp kiểm tra trong python selenium?

Nếu bạn chưa cài đặt Selenium và các thành phần của nó, hãy cài đặt chúng từ đây - Selenium Python Giới thiệu và Cài đặt.Bản thân gói Selenium không cung cấp một công cụ/khung thử nghiệm.Người ta có thể viết các trường hợp kiểm tra bằng mô -đun nhất quán của Python.Các tùy chọn khác cho một công cụ/khung là PY.using Python's unittest module. The other options for a tool/framework are py.

Làm cách nào để đăng nhập vào Python bằng Selenium?

Các bước để tự động hóa đăng nhập bằng Selenium WebDriver..
Tạo một phiên bản selenium webdriver ..
Định cấu hình trình duyệt nếu được yêu cầu ..
Điều hướng đến trang web cần thiết ..
Xác định vị trí phần tử web có liên quan ..
Thực hiện hành động trên phần tử web ..
Xác minh và xác nhận hành động ..