Selenium có thể xử lý JavaScript không?

Chúng tôi có thể xử lý cửa sổ bật lên JavaScript bằng Selenium webdriver với sự trợ giúp của giao diện Cảnh báo. Cảnh báo là cửa sổ bật lên chuyển trọng tâm từ trang web chính sang văn bản cảnh báo xuất hiện trên trang

Theo mặc định, trình điều khiển web có tiêu điểm trên trang chính, để truy cập cảnh báo, chúng tôi phải chuyển tiêu điểm trình điều khiển từ trang chính sang hộp cảnh báo một cách rõ ràng. Các cảnh báo có thể có hai loại - dựa trên web và dựa trên cửa sổ. Cửa sổ bật lên JavaScript là các cảnh báo dựa trên web

Công tắcTo(). phương thức alert() được sử dụng để chuyển tiêu điểm trình điều khiển sang cảnh báo. Khi tiêu điểm của trình điều khiển được thay đổi, chúng ta có thể lấy văn bản của cửa sổ bật lên với sự trợ giúp của phương thức switchTo(). báo động(). getText(). Cuối cùng, chúng ta sẽ sử dụng switchTo(). báo động(). accept() để chấp nhận cảnh báo và switchTo(). báo động(). phương thức bỏ qua () để loại bỏ nó

Để nhập văn bản bên trong cảnh báo xác nhận, phương thức switchTo(). báo động(). sendKeys() được sử dụng. Văn bản được nhập được truyền dưới dạng tham số cho phương thức này. Ngoài ra, chúng ta phải thêm tổ chức nhập khẩu. openqa. selen. Tuyên bố cảnh báo để làm việc với các cảnh báo

'Cảnh báo JS', chúng tôi nhận được cảnh báo bên dưới bằng nút OK. Khi chúng tôi nhấp vào OK, chúng tôi sẽ thấy kết quả văn bản bên dưới 'Kết quả. ’ tiêu đề như hình bên dưới.



Khi chúng tôi nhấp vào ​
'Xác nhận JS' . Khi chúng tôi nhấp vào OK, chúng tôi sẽ thấy kết quả văn bản bên dưới 'Kết quả. ’ tiêu đề như hình bên dưới


Khi chúng tôi nhấp vào 'Hủy', chúng tôi sẽ thấy văn bản bên dưới

Hãy để chúng tôi tự động hóa từng hành động trên 2 cảnh báo này

Trước hết chúng ta hãy kiểm tra ​'Cảnh báo JS'​​ button

So the xpath would be​​ //button[@onclick='jsAlert()']

Đoạn mã trông như dưới đây

Chạy tập lệnh, ​​ quan sát xem có thấy cảnh báo không

Chúng ta hãy tiếp tục trường hợp sử dụng này ​  bởi ​​ performing​​ below​​ operations:
i) ​​ chuyển sang cảnh báo
ii) lấy văn bản trên trang này​​ ‘I am a JS Alert’
iii) click OK​​ to close the alert

Đoạn mã dưới đây sẽ làm điều cần thiết

Chạy tập lệnh, ​​ quan sát xem bảng điều khiển in văn bản mong muốn

Tiếp theo chúng ta hãy kiểm tra nút 'Xác nhận JS'



Mã bên dưới sẽ 
hiển thị cảnh báo 'Xác nhận JS'

Chạy tập lệnh, chú ý văn bản trên bàn điều khiển

Xử lý cửa sổ bật lên JS​trong Selenium 4

Khi chúng tôi nhấp vào ​​  'JS Prompt' ​​ popup, we get the below popup with on OK and Cancel button​​ plus the text field where we can enter some text. When we ​​  nhập một số văn bản và ​​ nhấp vào OK,< . ’ tiêu đề​​ we​​ see the text​​ that we had entered​​ under​​ ‘Result:’ header

Nếu chúng tôi nhấp vào Hủy,chúng tôi sẽ thấy văn bản bên dưới

Hãy để chúng tôi tự động hóa các hành động trên cửa sổ bật lên này

Đầu tiên chúng ta hãy kiểm tra‘JS Prompt’



Xem bên dưới. Trên dòng số 32, chúng tôi đang nhập một số văn bản vào trường văn bản mà chúng tôi thấy trên cửa sổ bật lên

 

Chạy tập lệnh, bên dưới là nhật ký bảng điều khiển

Chúng ta hãy mở rộng trường hợp sử dụng này một chút.

Khi chúng tôi nhập một số văn bản như được hiển thị ở trên và nhấp vào Ok, chúng tôi sẽ thấy văn bản mà chúng tôi đã nhập dưới tiêu đề 'Kết quả' như hình bên dưới

WebDriver cung cấp API để làm việc với ba loại thông báo bật lên gốc do JavaScript cung cấp. Các cửa sổ bật lên này được trình duyệt tạo kiểu và cung cấp khả năng tùy chỉnh hạn chế

cảnh báo

Đơn giản nhất trong số này được gọi là cảnh báo, hiển thị thông báo tùy chỉnh và một nút duy nhất loại bỏ cảnh báo, được gắn nhãn trong hầu hết các trình duyệt là OK. Nó cũng có thể bị loại bỏ trong hầu hết các trình duyệt bằng cách nhấn nút đóng, nhưng thao tác này sẽ luôn hoạt động giống như nút OK. Xem một ví dụ cảnh báo

WebDriver có thể lấy văn bản từ cửa sổ bật lên và chấp nhận hoặc loại bỏ các cảnh báo này

//Click the link to activate the alert
driver.findElement(By.linkText("See an example alert")).click();

//Wait for the alert to be displayed and store it in a variable
Alert alert = wait.until(ExpectedConditions.alertIsPresent());

//Store the alert text in a variable
String text = alert.getText();

//Press the OK button
alert.accept();
  

# Click the link to activate the alert
driver.find_element(By.LINK_TEXT, "See an example alert").click()

# Wait for the alert to be displayed and store it in a variable
alert = wait.until(expected_conditions.alert_is_present())

# Store the alert text in a variable
text = alert.text

# Press the OK button
alert.accept()
  

//Click the link to activate the alert
driver.FindElement(By.LinkText("See an example alert")).Click();

//Wait for the alert to be displayed and store it in a variable
IAlert alert = wait.Until(ExpectedConditions.AlertIsPresent());

//Store the alert text in a variable
string text = alert.Text;

//Press the OK button
alert.Accept();
  

# Click the link to activate the alert
driver.find_element(:link_text, 'See an example alert').click

# Store the alert reference in a variable
alert = driver.switch_to.alert

# Store the alert text in a variable
alert_text = alert.text

# Press on OK button
alert.accept
  

//Click the link to activate the alert
await driver.findElement(By.linkText('See an example alert')).click();

// Wait for the alert to be displayed
await driver.wait(until.alertIsPresent());

// Store the alert in a variable
let alert = await driver.switchTo().alert();

//Store the alert text in a variable
let alertText = await alert.getText();

//Press the OK button
await alert.accept();

// Note: To use await, the above code should be inside an async function
  

//Click the link to activate the alert
driver.findElement(By.linkText("See an example alert")).click()

//Wait for the alert to be displayed and store it in a variable
val alert = wait.until(ExpectedConditions.alertIsPresent())

//Store the alert text in a variable
val text = alert.getText()

//Press the OK button
alert.accept()
  

Xác nhận

Một hộp xác nhận tương tự như một cảnh báo, ngoại trừ người dùng cũng có thể chọn hủy tin nhắn. Xem một mẫu xác nhận

Ví dụ này cũng cho thấy một cách tiếp cận khác để lưu trữ cảnh báo

//Click the link to activate the alert
driver.findElement(By.linkText("See a sample confirm")).click();

//Wait for the alert to be displayed
wait.until(ExpectedConditions.alertIsPresent());

//Store the alert in a variable
Alert alert = driver.switchTo().alert();

//Store the alert in a variable for reuse
String text = alert.getText();

//Press the Cancel button
alert.dismiss();
  

# Click the link to activate the alert
driver.find_element(By.LINK_TEXT, "See a sample confirm").click()

# Wait for the alert to be displayed
wait.until(expected_conditions.alert_is_present())

# Store the alert in a variable for reuse
alert = driver.switch_to.alert

# Store the alert text in a variable
text = alert.text

# Press the Cancel button
alert.dismiss()
  

________số 8

# Click the link to activate the alert
driver.find_element(:link_text, 'See a sample confirm').click

# Store the alert reference in a variable
alert = driver.switch_to.alert

# Store the alert text in a variable
alert_text = alert.text

# Press on Cancel button
alert.dismiss
  

# Click the link to activate the alert
driver.find_element(By.LINK_TEXT, "See an example alert").click()

# Wait for the alert to be displayed and store it in a variable
alert = wait.until(expected_conditions.alert_is_present())

# Store the alert text in a variable
text = alert.text

# Press the OK button
alert.accept()
  
0

# Click the link to activate the alert
driver.find_element(By.LINK_TEXT, "See an example alert").click()

# Wait for the alert to be displayed and store it in a variable
alert = wait.until(expected_conditions.alert_is_present())

# Store the alert text in a variable
text = alert.text

# Press the OK button
alert.accept()
  
1

Lời nhắc

Lời nhắc tương tự như hộp xác nhận, ngoại trừ chúng cũng bao gồm một kiểu nhập văn bản. Tương tự như làm việc với các phần tử biểu mẫu, bạn có thể sử dụng các phím gửi của WebDriver để điền vào phản hồi. Điều này sẽ thay thế hoàn toàn văn bản giữ chỗ. Nhấn nút hủy sẽ không gửi bất kỳ văn bản nào. Xem lời nhắc mẫu

Selenium nào không thể xử lý?

Không thể so sánh bitmap khi sử dụng Selenium WebDriver. Không thể tự động hóa Captcha bằng Selenium WebDriver. Chúng tôi không thể đọc mã vạch bằng Selenium WebDriver. Chúng tôi không thể tự động gửi OTP.

Làm cách nào để xử lý cảnh báo JavaScript trong Selenium?

Các phương pháp sau hữu ích để xử lý các cảnh báo trong Selenium. .
Loại bỏ vô hiệu (). Phương pháp này được sử dụng khi nhấp vào nút 'Hủy' trong hộp cảnh báo. .
Không chấp nhận(). Phương pháp này được sử dụng để nhấp vào nút 'OK' của cảnh báo. .
Chuỗi getText(). Phương pháp này được sử dụng để ghi lại thông báo cảnh báo

WebDriver có thể xử lý JavaScript không?

WebDriver cung cấp API để làm việc với ba loại thông báo bật lên gốc do JavaScript cung cấp .

Selenium nào tốt hơn với Java hoặc JavaScript?

Có, Java nhanh hơn một chút - nhưng tốc độ thực thi không phù hợp với người mới bắt đầu hoặc để tự động hóa Selenium. Javascript là điều bắt buộc đối với nhà phát triển giao diện người dùng web - nhưng Javascript kỳ quặc, khó hiểu và ít dễ tha thứ hơn Python.