Python Selenium tìm văn bản trên trang

Điều đầu tiên bạn muốn làm với WebDriver là điều hướng đến một liên kết. Cách thông thường để làm điều này là gọi phương thức

element = driver.find_element[By.ID, "passwd-id"]
element = driver.find_element[By.NAME, "passwd"]
element = driver.find_element[By.XPATH, "//input[@id='passwd-id']"]
element = driver.find_element[By.CSS_SELECTOR, "input#passwd-id"]
4

driver.get["//www.google.com"]

WebDriver sẽ đợi cho đến khi trang được tải đầy đủ [nghĩa là sự kiện

element = driver.find_element[By.ID, "passwd-id"]
element = driver.find_element[By.NAME, "passwd"]
element = driver.find_element[By.XPATH, "//input[@id='passwd-id']"]
element = driver.find_element[By.CSS_SELECTOR, "input#passwd-id"]
5 đã kích hoạt] trước khi trả lại quyền kiểm soát cho bài kiểm tra hoặc tập lệnh của bạn. Xin lưu ý rằng nếu trang của bạn sử dụng nhiều AJAX khi tải thì WebDriver có thể không biết khi nào nó đã tải xong. Nếu bạn cần đảm bảo các trang đó được tải đầy đủ thì bạn có thể sử dụng

3. 1. Tương tác với trang

Chỉ có thể đi đến những nơi không hữu ích lắm. Điều chúng tôi thực sự muốn làm là tương tác với các trang hoặc cụ thể hơn là các phần tử HTML trong một trang. Trước hết, chúng ta cần tìm một. WebDriver cung cấp một số cách để tìm phần tử. Ví dụ: đưa ra một phần tử được định nghĩa là


bạn có thể tìm thấy nó bằng cách sử dụng bất kỳ

element = driver.find_element[By.ID, "passwd-id"]
element = driver.find_element[By.NAME, "passwd"]
element = driver.find_element[By.XPATH, "//input[@id='passwd-id']"]
element = driver.find_element[By.CSS_SELECTOR, "input#passwd-id"]

Bạn cũng có thể tìm kiếm một liên kết bằng văn bản của nó, nhưng hãy cẩn thận. Văn bản phải khớp chính xác. Bạn cũng nên cẩn thận khi sử dụng XPATH trong WebDriver. Nếu có nhiều phần tử khớp với truy vấn thì chỉ phần tử đầu tiên được trả về. Nếu không tìm thấy gì, một

element = driver.find_element[By.ID, "passwd-id"]
element = driver.find_element[By.NAME, "passwd"]
element = driver.find_element[By.XPATH, "//input[@id='passwd-id']"]
element = driver.find_element[By.CSS_SELECTOR, "input#passwd-id"]
6 sẽ được nêu ra

WebDriver có API “Dựa trên đối tượng”; . Điều này có nghĩa là mặc dù bạn có thể thấy rất nhiều phương pháp khả thi mà bạn có thể gọi khi nhấn tổ hợp phím tự động hoàn thành của IDE, nhưng không phải tất cả chúng đều có ý nghĩa hoặc hợp lệ. Đừng lo. WebDriver sẽ cố gắng thực hiện Điều đúng đắn và nếu bạn gọi một phương thức vô nghĩa [“setSelected[]” trên thẻ “meta” chẳng hạn], một ngoại lệ sẽ được đưa ra

Vì vậy, bạn đã có một yếu tố. bạn có thể làm gì với nó?

element.send_keys["some text"]

Bạn có thể mô phỏng cách nhấn các phím mũi tên bằng cách sử dụng lớp “Phím”

element.send_keys[" and some", Keys.ARROW_DOWN]

Có thể gọi send_keys trên bất kỳ phần tử nào, điều này cho phép kiểm tra các phím tắt, chẳng hạn như các phím tắt được sử dụng trên GMail. Một tác dụng phụ của việc này là việc nhập nội dung nào đó vào trường văn bản sẽ không tự động xóa nội dung đó. Thay vào đó, nội dung bạn nhập sẽ được thêm vào nội dung đã có. Bạn có thể dễ dàng xóa nội dung của trường văn bản hoặc vùng văn bản bằng phương thức xóa

________số 8_______

3. 2. Điền vào những mẫu đơn

Chúng ta đã biết cách nhập văn bản vào vùng văn bản hoặc trường văn bản, nhưng còn các phần tử khác thì sao? . Xử lý các thẻ CHỌN không quá tệ

element = driver.find_element[By.XPATH, "//select[@name='name']"]
all_options = element.find_elements[By.TAG_NAME, "option"]
for option in all_options:
    print["Value is: %s" % option.get_attribute["value"]]
    option.click[]

Thao tác này sẽ tìm phần tử “CHỌN” đầu tiên trên trang và lần lượt duyệt qua từng TÙY CHỌN của nó, in ra các giá trị của chúng và chọn lần lượt từng phần

Như bạn có thể thấy, đây không phải là cách hiệu quả nhất để xử lý các phần tử CHỌN. Các lớp hỗ trợ của WebDriver bao gồm một lớp được gọi là “Chọn”, cung cấp các phương thức hữu ích để tương tác với các lớp này

from selenium.webdriver.support.ui import Select
select = Select[driver.find_element[By.NAME, 'name']]
select.select_by_index[index]
select.select_by_visible_text["text"]
select.select_by_value[value]

WebDriver cũng cung cấp các tính năng để bỏ chọn tất cả các tùy chọn đã chọn

select = Select[driver.find_element[By.ID, 'id']]
select.deselect_all[]

Thao tác này sẽ bỏ chọn tất cả các TÙY CHỌN từ CHỌN cụ thể đó trên trang

Giả sử trong một bài kiểm tra, chúng ta cần danh sách tất cả các tùy chọn được chọn mặc định, lớp Select cung cấp một phương thức thuộc tính trả về một danh sách

select = Select[driver.find_element[By.XPATH, "//select[@name='name']"]]
all_selected_options = select.all_selected_options

Để có được tất cả các tùy chọn có sẵn


0

Sau khi điền xong biểu mẫu, bạn có thể muốn gửi biểu mẫu. Một cách để làm điều này là tìm nút “gửi” và nhấp vào nút đó


1

Ngoài ra, WebDriver có phương thức tiện lợi “gửi” trên mọi phần tử. Nếu bạn gọi điều này trên một phần tử trong một biểu mẫu, WebDriver sẽ truy cập DOM cho đến khi nó tìm thấy biểu mẫu kèm theo và sau đó gọi gửi trên đó. Nếu phần tử không có trong biểu mẫu, thì

element = driver.find_element[By.ID, "passwd-id"]
element = driver.find_element[By.NAME, "passwd"]
element = driver.find_element[By.XPATH, "//input[@id='passwd-id']"]
element = driver.find_element[By.CSS_SELECTOR, "input#passwd-id"]
6 sẽ được nâng lên


2

3. 3. Kéo và thả

Bạn có thể sử dụng tính năng kéo và thả, di chuyển một phần tử theo một lượng nhất định hoặc chuyển sang phần tử khác


3

3. 4. Di chuyển giữa các cửa sổ và khung

Rất hiếm khi một ứng dụng web hiện đại không có bất kỳ khung nào hoặc bị giới hạn trong một cửa sổ. WebDriver hỗ trợ di chuyển giữa các cửa sổ được đặt tên bằng cách sử dụng “switch_to. phương pháp cửa sổ


4

Tất cả các cuộc gọi đến

element = driver.find_element[By.ID, "passwd-id"]
element = driver.find_element[By.NAME, "passwd"]
element = driver.find_element[By.XPATH, "//input[@id='passwd-id']"]
element = driver.find_element[By.CSS_SELECTOR, "input#passwd-id"]
8 bây giờ sẽ được hiểu là được chuyển hướng đến cửa sổ cụ thể. Nhưng làm thế nào để bạn biết tên của cửa sổ?


5

Ngoài ra, bạn có thể chuyển “tay cầm cửa sổ” cho “switch_to. phương pháp cửa sổ[]”. Biết được điều này, có thể lặp lại trên mọi cửa sổ đang mở như vậy


6

Bạn cũng có thể chuyển từ khung này sang khung khác [hoặc vào iframe]


7

Có thể truy cập các khung con bằng cách tách đường dẫn bằng dấu chấm và bạn cũng có thể chỉ định khung theo chỉ mục của nó. Đó là


8

sẽ chuyển đến khung có tên là “con” của khung con đầu tiên của khung có tên là “frameName”. Tất cả các khung được đánh giá như thể từ *top*

Khi chúng tôi hoàn thành công việc trên các khung, chúng tôi sẽ phải quay lại khung chính có thể được thực hiện bằng cách sử dụng


9

3. 5. Hộp thoại bật lên

Selenium WebDriver có hỗ trợ tích hợp để xử lý các hộp thoại bật lên. Sau khi bạn đã kích hoạt hành động mở cửa sổ bật lên, bạn có thể truy cập cảnh báo bằng thông tin sau

element = driver.find_element[By.ID, "passwd-id"]
element = driver.find_element[By.NAME, "passwd"]
element = driver.find_element[By.XPATH, "//input[@id='passwd-id']"]
element = driver.find_element[By.CSS_SELECTOR, "input#passwd-id"]
0

Điều này sẽ trả về đối tượng cảnh báo hiện đang mở. Với đối tượng này, giờ đây bạn có thể chấp nhận, loại bỏ, đọc nội dung của nó hoặc thậm chí nhập vào lời nhắc. Giao diện này hoạt động tốt như nhau trên các cảnh báo, xác nhận, lời nhắc. Tham khảo tài liệu API để biết thêm thông tin

3. 6. dẫn đường. lịch sử và vị trí

Trước đó, chúng tôi đã đề cập đến việc điều hướng đến một trang bằng cách sử dụng lệnh “get” [

element = driver.find_element[By.ID, "passwd-id"]
element = driver.find_element[By.NAME, "passwd"]
element = driver.find_element[By.XPATH, "//input[@id='passwd-id']"]
element = driver.find_element[By.CSS_SELECTOR, "input#passwd-id"]
9]. Như bạn đã thấy, WebDriver có một số giao diện nhỏ hơn, tập trung vào tác vụ và điều hướng là một tác vụ hữu ích. Để điều hướng đến một trang, bạn có thể sử dụng phương thức get

element = driver.find_element[By.ID, "passwd-id"]
element = driver.find_element[By.NAME, "passwd"]
element = driver.find_element[By.XPATH, "//input[@id='passwd-id']"]
element = driver.find_element[By.CSS_SELECTOR, "input#passwd-id"]
1

Để di chuyển tới lui trong lịch sử trình duyệt của bạn

element = driver.find_element[By.ID, "passwd-id"]
element = driver.find_element[By.NAME, "passwd"]
element = driver.find_element[By.XPATH, "//input[@id='passwd-id']"]
element = driver.find_element[By.CSS_SELECTOR, "input#passwd-id"]
2

Xin lưu ý rằng chức năng này phụ thuộc hoàn toàn vào trình điều khiển cơ bản. Có thể xảy ra điều gì đó không mong muốn khi bạn gọi các phương thức này nếu bạn đã quen với hành vi của trình duyệt này trên trình duyệt khác

3. 7. Bánh quy

Trước khi chuyển sang phần tiếp theo của hướng dẫn, bạn có thể quan tâm đến việc hiểu cách sử dụng cookie. Trước hết, bạn cần ở trên miền mà cookie sẽ hợp lệ

Làm cách nào để tìm văn bản trên trang trong Selenium Python?

Chúng tôi có thể tìm thấy một phần tử chứa văn bản cụ thể bằng trình quản trị web Selenium trong Python bằng cách sử dụng xpath . Bộ định vị này có các chức năng giúp xác minh một văn bản cụ thể có trong một phần tử. Hàm text[] trong xpath được sử dụng để định vị phần tử web tùy thuộc vào văn bản hiển thị trên trang.

Làm cách nào để tìm kiếm một văn bản trong một trang trong Selenium?

Đầu tiên, chúng ta sẽ mở trình điều khiển chrome bằng phương thức Chrome[] trong trình điều khiển web Selenium
Chỉ định URL trang web
Khi đó driver sẽ mở Give Web URL
Nhận mã nguồn trang web bằng thuộc tính page_source
Chỉ định văn bản cần tìm

Làm cách nào để tìm phần tử theo văn bản một phần trong Selenium Python?

Để tìm Phần tử liên kết [siêu liên kết] bằng văn bản liên kết một phần, sử dụng Selenium trong Python, gọi phương thức find_element[] và chuyển qua. PARTIAL_LINK_TEXT làm đối số đầu tiên và giá trị văn bản liên kết một phần làm đối số thứ hai .

Làm cách nào để tìm phần tử bằng văn bản hiển thị trong Selenium?

Để lấy văn bản hiển thị của phần tử web theo chương trình bằng cách sử dụng Selenium trong Java, gọi phương thức getText[] trên phần tử web . Trước tiên, chúng ta phải tìm phần tử web theo tên, id, tên lớp hoặc bất kỳ bộ định vị nào, sau đó gọi hàm getText[] trên phần tử web này.

Chủ Đề