Hướng dẫn selenium keyboard input python - Python nhập liệu bàn phím selen

Tôi có cấu trúc HTML sau đây và tôi đang cố gắng sử dụng selenium để nhập giá trị

inputElement.send_keys(Keys.ENTER)
2:

Nội dung chính

  • Hộp đầu vào
  • Hộp kiểm
  • Nút radio
  • Liên kết
  • Thả xuống
  • Bản trình diễn
  • Điền vào biểu mẫu một lần
  • Điền vào mẫu nhiều lần
  • head = driver.find_element_by_class_name("MY_HEADING_A") frame_elem = head.find_element_by_class_name("PageText") # Following is a pseudo code. # Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) # and then hit RETURN key. ## txt = frame_elem.find_element_by_name("NUM") ## txt.send_keys(Key.4) 01
  • Đợi cho đến khi có thể nhấp được
  • Thực hiện JavaScript
  • Thực hiện (các) hành động sơ bộ
  • Làm cách nào để điền vào hộp văn bản trong selen?
  • Làm cách nào để nhập đầu vào trong selen?
  • Làm cách nào để điền vào dạng selen?
  • Làm thế nào để bạn nhập một hộp văn bản bằng Python bằng Selenium?

<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>

Đây là mã tôi đã viết:

head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)

Làm thế nào để có được phần tử này và nhập một giá trị? ‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎

Hướng dẫn selenium keyboard input python - Python nhập liệu bàn phím selen

Đã hỏi ngày 1 tháng 9 năm 2013 lúc 9:59Sep 1, 2013 at 9:59Sep 1, 2013 at 9:59

Giả sử trang của bạn có sẵn trong "http://example.com"

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://example.com")

Chọn phần tử bằng ID:

inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')

Bây giờ bạn có thể mô phỏng việc nhấn enter:

inputElement.send_keys(Keys.ENTER)

Hoặc nếu đó là một hình thức bạn có thể gửi:

inputElement.submit() 

Đã trả lời ngày 1 tháng 9 năm 2013 lúc 11:33Sep 1, 2013 at 11:33Sep 1, 2013 at 11:33

zero323zero323zero323zero323

312K94 Huy hiệu vàng932 Huy hiệu bạc920 Huy hiệu Đồng94 gold badges932 silver badges920 bronze badges94 gold badges932 silver badges920 bronze badges

3

web=driver.get('your web address')
input_1=driver.find_element(by=By.ID, value= 'id of element')
input_2=driver.find_element(by=By.ID, value= 'id of element')
input_3=driver.find_element(by=By.ID, value= 'id of element')

time.sleep(7)
input_1.send_keys(your value)
input_2.send_keys(your value)
input_3.send_keys(your value)

Joanis

8.27112 Huy hiệu vàng26 Huy hiệu bạc36 Huy hiệu đồng12 gold badges26 silver badges36 bronze badges12 gold badges26 silver badges36 bronze badges

Đã trả lời ngày 17 tháng 3 lúc 9:59Mar 17 at 9:59Mar 17 at 9:59

1

Các hình thức web rất có mặt khi lướt Internet. Một biểu mẫu Web bao gồm các yếu tố web như hộp đầu vào, hộp kiểm, nút radio, liên kết, thực đơn thả xuống và gửi nút để thu thập dữ liệu người dùng. Để xử lý các biểu mẫu web, trước tiên chúng ta cần tìm các yếu tố web này và sau đó thực hiện các hành động tiếp theo trên chúng như chọn một giá trị hoặc nhập một số văn bản. Selenium có một API giúp chúng ta làm điều đó. Vì chúng tôi đã đề cập đến cách tìm (các) phần tử web bằng cách sử dụng các bộ chọn selen trong chương trước, chương này tập trung vào việc truy cập các biểu mẫu trong selenium: thực hiện các hành động trên và tương tác với các biểu mẫu. Hãy cho chúng tôi xem các hành động khác nhau có thể được thực hiện như thế nào trên từng loại trường web có thể tham gia vào một biểu mẫu web. Chúng tôi sử dụng trang web mẫu tìm kiếm hoàn chỉnh động này để minh họa hầu hết các ví dụ được sử dụng trong chương này. Dưới đây là ảnh chụp màn hình về cách trang web này sử dụng biểu mẫu:

Hộp đầu vào

Hộp đầu vào là hộp văn bản hiển thị đầu vào của người dùng. Để xử lý bất kỳ hộp đầu vào nào, chúng tôi phải có thể nhập thông tin, xóa thông tin hoặc nhận thông tin từ hộp. Để nhập văn bản vào hộp văn bản, chúng tôi có thể sử dụng phương thức

inputElement.send_keys(Keys.ENTER)
3, sẽ nhập văn bản người dùng từ tập lệnh tự động hóa của chúng tôi. Mã sau đây nhập tên sinh viên bắt đầu bằng cách sử dụng một hộp văn bản có ID là tìm kiếm của Google.
driver.find_element_by_id('search_name').send_keys("A")

Để xóa văn bản trước, chúng ta có thể sử dụng phương thức

inputElement.send_keys(Keys.ENTER)
4. Ví dụ:
<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
1

Nếu chúng ta cần xác thực một số văn bản hiện có, chúng ta có thể tìm nạp văn bản trong hộp văn bản bằng phương thức

inputElement.send_keys(Keys.ENTER)
5:
<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
3

Hộp kiểm

Hộp kiểm là một hộp nhỏ cho phép chúng tôi kiểm tra hoặc bỏ chọn nó. Để chọn hoặc kiểm tra một giá trị, chúng tôi sử dụng phương thức

inputElement.send_keys(Keys.ENTER)
6. Nó chỉ đơn giản là thay đổi trạng thái từ không được kiểm soát sang kiểm tra và ngược lại. Ví dụ: mã bên dưới nhấp vào hộp kiểm
inputElement.send_keys(Keys.ENTER)
7:
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
0

Đối phó với các hộp kiểm không phải lúc nào cũng đơn giản. Chúng ta có thể chỉ cần chọn hộp kiểm khi nó chưa được chọn. Hoặc, chúng tôi có thể muốn bỏ chọn một hộp kiểm chỉ khi nó đã được chọn. Nếu chúng tôi đang cố chọn hộp kiểm, nhưng chúng tôi thực hiện thao tác nhấp chuột trên hộp kiểm đã chọn, thì hộp kiểm sẽ được bỏ chọn; một cái gì đó chúng tôi không muốn xảy ra. Vì vậy, trước tiên chúng tôi cần xác thực xem hộp kiểm có được chọn hay không. Để có được trạng thái hiện tại của hộp kiểm, chúng tôi có thể sử dụng một trong hai phương pháp:

inputElement.send_keys(Keys.ENTER)
8 hoặc
inputElement.send_keys(Keys.ENTER)
9. Ví dụ: sử dụng
inputElement.send_keys(Keys.ENTER)
8:
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
1

Điều này sẽ trả về một giá trị boolean. Điều này có nghĩa là nếu hộp kiểm được kiểm tra, chúng tôi sẽ nhận được giá trị

inputElement.submit() 
1 khác, chúng tôi sẽ nhận được giá trị
inputElement.submit() 
2. Ngoài ra, sử dụng
inputElement.send_keys(Keys.ENTER)
9:
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
2

Điều này sẽ trả về

inputElement.submit() 
1 nếu hộp kiểm được chọn, nhưng sẽ trả về
inputElement.submit() 
5 nếu hộp kiểm không được chọn. Mã sau chỉ hiển thị cách bỏ chọn hộp kiểm chỉ khi được chọn:
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
0

Nút radio

Nút radio là một phần tử tròn trên màn hình mà chúng ta có thể chọn. Nút radio tương tự như hộp kiểm, nhưng chỉ có thể chọn một nút radio trong số nhiều lựa chọn, trong khi chúng tôi có thể chọn nhiều hộp kiểm. Các hành động được thực hiện trên nút radio tương tự như trên hộp kiểm và chúng ta có thể sử dụng các phương thức tương tự như trên để chọn nút radio hoặc xác thực trạng thái lựa chọn của nó:

inputElement.send_keys(Keys.ENTER)
6 và
inputElement.send_keys(Keys.ENTER)
8 /
inputElement.send_keys(Keys.ENTER)
9. Mã dưới đây cung cấp một ví dụ:
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
4

Các nút radio không hỗ trợ bỏ rơi. Để chọn nút radio, người ta cần chọn bất kỳ nút radio nào khác trong nhóm đó. Nếu chúng ta chọn cùng một nút radio cố gắng bỏ chọn nó, chúng ta sẽ nhận được lựa chọn giống như trước đây; không có gì thay đổi. Mã sau chỉ hiển thị cách bỏ chọn nút radio khi nó được chọn:

head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
5

Liên kết

Một liên kết chuyển hướng chúng tôi đến một trang web mới hoặc một cửa sổ bật lên mới hoặc một điều tương tự. Chúng ta có thể sử dụng hai cơ chế để điều hướng đến màn hình mới hoặc bật lên mới hoặc biểu mẫu mới: chúng ta có thể thực hiện hành động nhấp vào phần tử liên kết mà chúng ta tìm thấy hoặc lấy URL mới từ phần tử liên kết mà chúng ta tìm thấy và sau đó điều hướng đến nó. Dưới đây là một ví dụ về vận hành liên kết được nhúng trong trang web ví dụ bằng cơ chế đầu tiên:

head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
6

Một URL liên kết thường được nhúng trong phần tử liên kết mà chúng tôi tìm thấy với tên thẻ

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://example.com")
49 làm thuộc tính
web=driver.get('your web address')
input_1=driver.find_element(by=By.ID, value= 'id of element')
input_2=driver.find_element(by=By.ID, value= 'id of element')
input_3=driver.find_element(by=By.ID, value= 'id of element')

time.sleep(7)
input_1.send_keys(your value)
input_2.send_keys(your value)
input_3.send_keys(your value)
0. Thay vì nhấp trực tiếp vào liên kết, chúng tôi có thể sử dụng phương thức
inputElement.send_keys(Keys.ENTER)
5. Đây là ví dụ tương tự bằng cách sử dụng cơ chế thứ hai:
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
7

Thả xuống

Một danh sách thả xuống là một danh sách có một mũi tên ở đầu ngoài cùng bên phải để mở rộng và hiển thị các giá trị. Nó cung cấp một danh sách các tùy chọn cho người dùng, do đó cung cấp quyền truy cập vào một hoặc nhiều giá trị theo yêu cầu. Để làm việc với một thả xuống, trước tiên chúng ta cần chọn hoặc tìm nhóm phần tử chính và sau đó đi vào bên trong và chọn phần tử phụ mà chúng ta muốn nắm bắt. API Selenium Python cung cấp lớp

web=driver.get('your web address')
input_1=driver.find_element(by=By.ID, value= 'id of element')
input_2=driver.find_element(by=By.ID, value= 'id of element')
input_3=driver.find_element(by=By.ID, value= 'id of element')

time.sleep(7)
input_1.send_keys(your value)
input_2.send_keys(your value)
input_3.send_keys(your value)
2, cho phép chúng tôi chọn yếu tố mà chúng tôi lựa chọn. Lưu ý rằng lớp
web=driver.get('your web address')
input_1=driver.find_element(by=By.ID, value= 'id of element')
input_2=driver.find_element(by=By.ID, value= 'id of element')
input_3=driver.find_element(by=By.ID, value= 'id of element')

time.sleep(7)
input_1.send_keys(your value)
input_2.send_keys(your value)
input_3.send_keys(your value)
2 chỉ hoạt động với các thẻ có thẻ
web=driver.get('your web address')
input_1=driver.find_element(by=By.ID, value= 'id of element')
input_2=driver.find_element(by=By.ID, value= 'id of element')
input_3=driver.find_element(by=By.ID, value= 'id of element')

time.sleep(7)
input_1.send_keys(your value)
input_2.send_keys(your value)
input_3.send_keys(your value)
4. Chúng ta có thể chọn một phần tử phụ của thả xuống bằng: 1) INDEX, 2) Giá trị hoặc 3) văn bản.

Nếu thả xuống có thuộc tính

web=driver.get('your web address')
input_1=driver.find_element(by=By.ID, value= 'id of element')
input_2=driver.find_element(by=By.ID, value= 'id of element')
input_3=driver.find_element(by=By.ID, value= 'id of element')

time.sleep(7)
input_1.send_keys(your value)
input_2.send_keys(your value)
input_3.send_keys(your value)
5, thì chúng ta có thể sử dụng chỉ mục đó để chọn một tùy chọn cụ thể. Chúng ta cần cẩn thận khi sử dụng phương pháp này, vì không có gì lạ khi bắt đầu chỉ mục ở 0. Chúng ta có thể sử dụng phương thức
web=driver.get('your web address')
input_1=driver.find_element(by=By.ID, value= 'id of element')
input_2=driver.find_element(by=By.ID, value= 'id of element')
input_3=driver.find_element(by=By.ID, value= 'id of element')

time.sleep(7)
input_1.send_keys(your value)
input_2.send_keys(your value)
input_3.send_keys(your value)
6 để chọn tùy chọn bằng thuộc tính
web=driver.get('your web address')
input_1=driver.find_element(by=By.ID, value= 'id of element')
input_2=driver.find_element(by=By.ID, value= 'id of element')
input_3=driver.find_element(by=By.ID, value= 'id of element')

time.sleep(7)
input_1.send_keys(your value)
input_2.send_keys(your value)
input_3.send_keys(your value)
5. Ví dụ: chúng tôi muốn chọn học sinh lớp 5:
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
8

Nếu đánh dấu HTML xác định thẻ

web=driver.get('your web address')
input_1=driver.find_element(by=By.ID, value= 'id of element')
input_2=driver.find_element(by=By.ID, value= 'id of element')
input_3=driver.find_element(by=By.ID, value= 'id of element')

time.sleep(7)
input_1.send_keys(your value)
input_2.send_keys(your value)
input_3.send_keys(your value)
8, thì chúng ta có thể sử dụng giá trị khớp với đối số. Giả sử HTML cho thả xuống là như thế này:
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
9

Chúng ta có thể sử dụng phương thức

web=driver.get('your web address')
input_1=driver.find_element(by=By.ID, value= 'id of element')
input_2=driver.find_element(by=By.ID, value= 'id of element')
input_3=driver.find_element(by=By.ID, value= 'id of element')

time.sleep(7)
input_1.send_keys(your value)
input_2.send_keys(your value)
input_3.send_keys(your value)
9 để chọn tùy chọn bằng thuộc tính
driver.find_element_by_id('search_name').send_keys("A")
0.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://example.com")
0

Có lẽ cách dễ nhất để chọn phần tử phụ là chọn một phần tử bằng văn bản của thả xuống. Chúng ta phải khớp với văn bản được hiển thị trong phần thả xuống bằng phương thức

driver.find_element_by_id('search_name').send_keys("A")
1. Ví dụ:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://example.com")
1

Theo cách tương tự, chúng ta có thể bỏ chọn bất kỳ giá trị được chọn nào từ thả xuống bằng bất kỳ tùy chọn nào sau đây: 1)

driver.find_element_by_id('search_name').send_keys("A")
2, 2)
driver.find_element_by_id('search_name').send_keys("A")
3 hoặc 3)
driver.find_element_by_id('search_name').send_keys("A")
4. Các phương pháp này chỉ có thể được sử dụng khi chúng ta thực hiện nhiều lựa chọn. Phương thức
driver.find_element_by_id('search_name').send_keys("A")
5 xóa tất cả các tùy chọn đã chọn. Điều này cũng chỉ áp dụng khi có nhiều lựa chọn. Nếu chúng ta cố gắng sử dụng điều này khi có một lựa chọn duy nhất, nó sẽ ném một ngoại lệ
driver.find_element_by_id('search_name').send_keys("A")
6.

Có những lúc trong khi thực hiện tự động hóa selenium của ứng dụng web của chúng tôi, nơi chúng tôi cần xác thực các tùy chọn trong danh sách thả xuống của chúng tôi. Lớp

web=driver.get('your web address')
input_1=driver.find_element(by=By.ID, value= 'id of element')
input_2=driver.find_element(by=By.ID, value= 'id of element')
input_3=driver.find_element(by=By.ID, value= 'id of element')

time.sleep(7)
input_1.send_keys(your value)
input_2.send_keys(your value)
input_3.send_keys(your value)
2 cung cấp các phương thức thuộc tính cho phép chúng tôi làm điều này. Hai phương thức thuộc tính đầu tiên được áp dụng khi chúng ta có thể chọn nhiều tùy chọn.
  • driver.find_element_by_id('search_name').send_keys("A")
    8 - Nhận danh sách tất cả các tùy chọn đã chọn.
  • driver.find_element_by_id('search_name').send_keys("A")
    9 - Trả về tùy chọn đầu tiên đã được chọn từ thả xuống và không giống như phương thức trên, nó sẽ trả về một phần tử web duy nhất chứ không phải danh sách.
  • <div class="MY_HEADING_A">
        <div class="TitleA">My title</div>
        <div class="Foobar"></div>
            <div class="PageFrame" area="W">                
                 <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
    </div>
    
    10-Trả về
    inputElement.submit() 
    
    1 Nếu thả xuống cho phép đa lựa chọn và trả lại
    inputElement.submit() 
    
    5 nếu không.
  • <div class="MY_HEADING_A">
        <div class="TitleA">My title</div>
        <div class="Foobar"></div>
            <div class="PageFrame" area="W">                
                 <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
    </div>
    
    13 - Nhận danh sách tất cả các tùy chọn có sẵn trong một thả xuống.

nút

Các nút chỉ được sử dụng để gửi bất kỳ thông tin nào chúng tôi đã điền vào các biểu mẫu của chúng tôi đến máy chủ. Điều này có thể được thực hiện thông qua các hành động nhấp vào nút, chủ yếu sử dụng phương thức

inputElement.send_keys(Keys.ENTER)
6:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://example.com")
2

Bản trình diễn

Sử dụng trang web mẫu tìm kiếm hoàn chỉnh động của chúng tôi, chúng tôi sẽ kiểm tra một chương trình đơn giản để xử lý tất cả các loại yếu tố biểu mẫu mà chúng tôi đã đề cập cho đến nay. Thứ hai, chúng tôi sẽ kiểm tra một chương trình nâng cao xử lý tình huống mà chúng tôi sẽ cần truy cập vào biểu mẫu này không chỉ một lần mà nhiều lần tuần tự.

Điền vào biểu mẫu một lần

Giả sử rằng chúng tôi muốn tìm kiếm tất cả các học sinh lớp 5 có tên bắt đầu với kích thước của A A và Kích thước trang ở mức 5. Chương trình bên dưới trình bày cách điền vào biểu mẫu và gửi nó đến máy chủ. Chúng tôi bắt đầu với việc nhập các gói chúng tôi cần cho nhiệm vụ. Chúng tôi đặc biệt cần nhập mô -đun

web=driver.get('your web address')
input_1=driver.find_element(by=By.ID, value= 'id of element')
input_2=driver.find_element(by=By.ID, value= 'id of element')
input_3=driver.find_element(by=By.ID, value= 'id of element')

time.sleep(7)
input_1.send_keys(your value)
input_2.send_keys(your value)
input_3.send_keys(your value)
2 vì chúng tôi cần chọn lớp 5 từ menu thả xuống.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://example.com")
3

Tiếp theo chúng ta cần phải trải qua các bước thiết lập, bao gồm tạo một thể hiện Chrome WebDriver và sau đó sử dụng nó để tải trang web ví dụ của biểu mẫu tìm kiếm. Chi tiết về quy trình thiết lập được đề cập trong Phần 4.1.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://example.com")
4

Sau đó, chúng tôi nhập vào A A A vào hộp văn bản có ID là tìm kiếm_name,:

driver.find_element_by_id('search_name').send_keys("A")

Tiếp theo, chúng tôi chọn lớp 5 từ menu thả xuống có ID là tìm kiếm của Google.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://example.com")
6

Sau đó chúng tôi đặt kích thước trang ở mức 5.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://example.com")
7

Sau đó chúng tôi kiểm tra hai hộp kiểm Điều kiện chính sách:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://example.com")
8

Cuối cùng, chúng tôi gửi thông tin chúng tôi đã điền vào mẫu tìm kiếm đến máy chủ:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://example.com")
2

Điền vào mẫu nhiều lần

Bây giờ giả sử rằng chúng tôi muốn tìm kiếm tất cả các sinh viên. Điều này sẽ yêu cầu chúng tôi điền vào mẫu nhiều lần, mỗi lần thay đổi đầu vào. Trước tiên chúng tôi phải chơi với trang web để xem liệu trang web biểu mẫu có được làm mới mỗi khi chúng tôi truy cập nó không. Điều này sẽ xác định cách chúng tôi sẽ viết mã của chúng tôi. Nếu trang biểu mẫu được làm mới mỗi khi chúng tôi truy cập nó, thì chúng tôi phải nạp lại tất cả các trường biểu mẫu mỗi lần ngay cả khi hầu hết các trường đó là đầu vào lặp đi lặp lại. Chương trình dưới đây cho thấy một ví dụ về trường hợp sử dụng này.

Trước tiên, chúng tôi chỉ gói mã điền vào biểu mẫu chỉ một lần vào một hàm riêng gọi là

<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
16 với ba tham số - đối tượng trình điều khiển, chữ cái đầu tiên của một tên học sinh và lớp. Chúng ta cần có hai tham số sau cho hàm vì mỗi lần chúng ta điền vào biểu mẫu, chúng ta điền vào đầu vào thay đổi trong hai trường này nhưng điền vào cùng một đầu vào trong tất cả các trường khác.
inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
0

Khi chúng tôi gửi biểu mẫu của chúng tôi, thông thường chúng tôi sẽ nhận được một bảng kết quả trên một trang với mỗi hàng đại diện cho một hồ sơ sinh viên đáp ứng các tiêu chí tìm kiếm. Vì vậy, chúng tôi viết ra một chức năng riêng biệt khác được gọi là

<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
17 loại bỏ tất cả các bản ghi của sinh viên trong bảng trên trang này. Nó lấy đối tượng trình điều khiển làm tham số và trả về tất cả các bản ghi của sinh viên trong bảng kết quả trên trang này, được lưu trữ trong một danh sách các từ điển. Mục 4.3.1 bao gồm chi tiết về cách cạo một bảng.
inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
1

Bây giờ, chúng tôi đặt tất cả những điều này lại với nhau và viết một chương trình hoàn chỉnh. Chúng tôi bắt đầu với việc nhập các gói cần thiết cho nhiệm vụ và trải qua quy trình thiết lập như bình thường:

inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
2

Mã sau đó chuyển sang chức năng chính. Trước tiên chúng tôi tạo một danh sách để lưu trữ kết quả tìm kiếm cuối cùng. Chúng tôi sử dụng một vòng đôi trong đó chúng tôi lặp qua mỗi lớp cho một chữ cái nhất định và sau đó lặp qua mỗi chữ cái. Trong hầu hết các vòng lặp bên trong, chúng tôi gọi hàm

<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
16 với một lớp nhất định cho một chữ cái nhất định, điền vào tất cả các trường của biểu mẫu và gửi nó lên máy chủ.

Nó không đảm bảo rằng mọi tìm kiếm sẽ trả về bất kỳ hồ sơ sinh viên nào đáp ứng các tiêu chí tìm kiếm. Vì vậy, chúng tôi sử dụng

<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
19 và
<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
30 (cặp bên ngoài) để xử lý tình huống khi không có kết quả nào được trả về. Trong cả hai trường hợp, khi một tìm kiếm kết thúc, chúng tôi làm mới biểu mẫu tìm kiếm (
<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
31) và chuyển sang tìm kiếm mới tiếp theo.

Sau đó, chúng ta hãy tập trung vào những gì xảy ra bên trong vòng lặp

<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
32. Trước tiên, chúng tôi xóa tất cả các bản ghi của sinh viên trong bảng kết quả trên một trang bằng cách gọi hàm
<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
17 và nối các kết quả vào danh sách kết quả cuối cùng. Bởi vì chúng tôi đặt kích thước trang ở mức 5, năm hàng sẽ hiển thị trên một trang. Vì vậy, nếu hơn 5 hồ sơ sinh viên đáp ứng các tiêu chí tìm kiếm, kết quả tìm kiếm sẽ có nhiều trang. Chúng tôi không biết trước về có bao nhiêu trang. Đây là lý do tại sao chúng tôi sử dụng một vòng lặp trong thời gian thay vì một vòng lặp.

Chúng tôi chỉ biết rằng chúng tôi có thể chuyển sang trang tiếp theo ngoại trừ kết quả được chứa trong một trang hoặc trang hiện tại là trang cuối cùng. Chúng tôi sử dụng cặp

<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
19 và
<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
30 bên trong vòng lặp trong khi xử lý tình huống khi không có trang tiếp theo. Trong trường hợp không có trang tiếp theo, chúng tôi thoát ra khỏi vòng lặp
<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
32 vì chúng tôi đã đạt đến kết thúc kết quả cho tìm kiếm này. Chúng tôi đã xóa tất cả các kết quả có trong một trang hoặc đã chuyển sang trang cuối cùng và xóa tất cả các kết quả.
inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
3

Cuối cùng, chúng tôi lưu trữ danh sách các kết quả cuối cùng vào khung dữ liệu gấu trúc và đóng trình điều khiển của chúng tôi.

inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
4

Các dòng mã trong chương trình này -

<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
31 - chỉ ra rằng biểu mẫu sẽ được làm mới bất cứ khi nào chúng tôi hoàn thành tìm kiếm hiện tại. Điều này có thể xảy ra khi chúng tôi phát hiện ra rằng không có kết quả nào cho tìm kiếm này hoặc khi chúng tôi đã loại bỏ kết quả cho tìm kiếm này. Vì biểu mẫu được làm mới mỗi lần cho một tìm kiếm mới, chúng tôi cần nạp lại biểu mẫu mỗi lần khi một tìm kiếm mới bắt đầu. Đây là lý do tại sao chúng tôi gọi hàm
<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
38 thực hiện các hành động điền vào biểu mẫu từ lớp bên trong nhất của vòng lặp cho.

Để biết những gì chúng ta cần nhập cho một tìm kiếm mới, chúng ta phải tìm ra nơi mà tìm kiếm đã đi rất xa cho đến thời điểm này khi biểu mẫu được làm mới cho một tìm kiếm mới. Chúng tôi kiểm soát việc di chuyển các vòng tìm kiếm bằng cách sử dụng lập chỉ mục của một danh sách. Chúng tôi đặt tất cả các tùy chọn cho một trường biểu mẫu vào một danh sách được tạo với thứ tự chính xác của các yếu tố danh sách khi được hiển thị trong trường biểu mẫu. Khi chúng tôi lặp qua danh sách này, chúng tôi kiểm soát nơi tìm kiếm chạy qua. Trong ví dụ trên, các dòng mã -

<div class="MY_HEADING_A">
    <div class="TitleA">My title</div>
    <div class="Foobar"></div>
        <div class="PageFrame" area="W">                
             <span class="PageText">PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span>
</div>
39 và
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
00 - đóng vai trò này. Họ kiểm soát việc lập chỉ mục của danh sách tên và danh sách lớp. Trường tên và trường lớp là hai trường duy nhất có giá trị đầu vào sẽ thay đổi cho một tìm kiếm mới. Đây là lý do tại sao chúng ta cần tạo một danh sách cho họ và sau đó lặp qua nó thay vì làm điều tương tự cho tất cả các trường mẫu khác.

Một kịch bản khác là trang biểu mẫu không được làm mới cho một tìm kiếm mới. Trong trường hợp này, sau đó chúng tôi không cần phải nạp lại các trường biểu mẫu sẽ không thay đổi giá trị của chúng trong một tìm kiếm mới. Dưới đây là chương trình thực hiện cùng một nhiệm vụ. Một số đoạn mã là lặp đi lặp lại của chương trình cuối cùng, vì vậy tôi chỉ hiển thị một phần của mã khác nhau như dưới đây:

inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
5

Không có mã trong chương trình này làm mới trang biểu mẫu. Chúng tôi đặt các dòng mã điền vào các trường dạng không đổi bên ngoài vòng lặp để các trường không đổi đó sẽ không được nạp lại mỗi lần cho một tìm kiếm mới. Sự thay đổi vị trí của các dòng liên quan của mã so sánh chương trình trong kịch bản đầu tiên phản ánh ý tưởng này.

Đối với các trường biểu mẫu thay đổi đầu vào, như tên học sinh và lớp, tôi lấy phần mã nhập tên học sinh ra khỏi vòng lặp bên trong nhất và đặt nó vào vòng lặp bên ngoài vì chỉ có chữ cái đầu tiên của một tên sinh viên, chỉ Trường lớp thay đổi trong tìm kiếm và chúng tôi không cần phải nạp lại trường tên. Khi trường tên cần được cập nhật trong tìm kiếm, trước tiên chúng ta phải xóa hộp đầu vào vì trong trường hợp này, mẫu tìm kiếm không được làm mới.

head = driver.find_element_by_class_name("MY_HEADING_A") frame_elem = head.find_element_by_class_name("PageText") # Following is a pseudo code. # Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) # and then hit RETURN key. ## txt = frame_elem.find_element_by_name("NUM") ## txt.send_keys(Key.4) 01

Trong một số trường hợp khi phần tử không tương tác, các hành động trên đó như được giới thiệu trong các phần trên không hoạt động và chúng ta có khả năng gặp phải

head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
01. Điều này được gây ra khi một phần tử được tìm thấy, nhưng chúng ta không thể tương tác với nó - ví dụ, chúng ta có thể không thể nhấp hoặc gửi khóa. Có thể có một số lý do cho kịch bản này:
  1. Phần tử không hiển thị / không được hiển thị.
  2. Phần tử là ngoài màn hình.
  3. Phần tử đứng sau một yếu tố khác hoặc ẩn.
  4. Một số hành động khác cần được người dùng thực hiện trước tiên để kích hoạt phần tử.

Có những chiến lược có thể hoạt động để làm cho yếu tố tương tác, tùy thuộc vào hoàn cảnh.

Đợi cho đến khi có thể nhấp được

Nếu phần tử chưa được tải xuống đầy đủ, chúng ta có thể đợi cho đến khi phần tử được hiển thị / có thể nhấp. Nhìn vào ví dụ sau đây chúng tôi muốn lấy hồ sơ cho học sinh lớp 5 có tên là Adam Adams. Trước tiên, chúng tôi điền vào mẫu tìm kiếm bằng chữ cái A A và Lớp 5 và gửi nó đến máy chủ, như trước đây. Phần mã này đã được cung cấp trong phần Phần điền vào biểu mẫu một lần. Sau khi chúng tôi gửi biểu mẫu tìm kiếm đến máy chủ, thông thường, chúng tôi sẽ nhận được một bảng kết quả được trả về. Sau đó, chúng tôi cần xác định vị trí liên kết đến hồ sơ của Stduent, Adams Adams trong bảng kết quả. Dưới đây là cách chúng tôi tiếp tục viết mã này sau khi gửi mẫu tìm kiếm. Đây là phần được thiết lập của mã:

inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
6

Mã trên tạo ra một thông báo lỗi -

head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
03 - vì bảng kết quả chưa được tải xuống đầy đủ. Selenium
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
04 cung cấp hai loại chờ để xử lý nó, rõ ràng và chờ đợi. Phương pháp
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
05 là một sự chờ đợi rõ ràng để đặt điều kiện là một khoảng thời gian chính xác để chờ đợi, như mã bên dưới hiển thị:explicit wait to set the condition to be an exact time period to wait, as the code below shows:
inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
7explicit wait to set the condition to be an exact time period to wait, as the code below shows:
inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
7

Như đã thảo luận trong chương trước, một giải pháp hiệu quả hơn sẽ là làm cho

head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
04 chỉ chờ đợi miễn là yêu cầu. Đây cũng là một sự chờ đợi rõ ràng nhưng hiệu quả hơn
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
05. Mã bên dưới sử dụng sự hiện diện của phần tử bảng kết quả với ID
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
08 để tuyên bố rằng trang đã được tải đầy đủ:wait only as long as required. This is also an explicit wait but more efficient than
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
05. The code below uses the presence of the resulting table element with id
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
08 to declare that the page has been fully loaded:
inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
8wait only as long as required. This is also an explicit wait but more efficient than
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
05. The code below uses the presence of the resulting table element with id
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
08 to declare that the page has been fully loaded:
inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
8

Giải pháp cuối cùng là sử dụng sự chờ đợi ngầm, cho

head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
04 thăm dò ý kiến ​​DOM trong một khoảng thời gian nhất định khi cố gắng tìm bất kỳ yếu tố nào không có sẵn ngay lập tức. Cài đặt mặc định là 0. Sau khi được đặt, sự chờ đợi ngầm được đặt cho tuổi thọ của đối tượng
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
04.implicit wait, which tells
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
04 to poll the DOM for a certain amount of time when trying to find any element(s) not immediately available. The default setting is 0. Once set, the implicit wait is set for the life of the
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
04 object.
inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
9implicit wait, which tells
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
04 to poll the DOM for a certain amount of time when trying to find any element(s) not immediately available. The default setting is 0. Once set, the implicit wait is set for the life of the
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
04 object
.
inputElement = driver.find_element_by_id("a1")
inputElement.send_keys('1')
9

Thực hiện JavaScript

Trên biểu mẫu tìm kiếm động này với trang web trường ẩn, chúng ta có thể thấy rằng nút gửi biểu mẫu được ẩn. Nếu chúng tôi vẫn sử dụng phương thức

inputElement.send_keys(Keys.ENTER)
6, chúng tôi sẽ nhận được thông báo lỗi khi nói rằng
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
12. Trong trường hợp này, chúng tôi có thể chọn thực thi JavaScript tương tác trực tiếp với DOM:
inputElement.send_keys(Keys.ENTER)
0

Thực hiện (các) hành động sơ bộ

Một lần nữa, chúng tôi hãy tìm kiếm tất cả các học sinh lớp 5 có tên bắt đầu với trang web trên trang web mẫu tìm kiếm hoàn chỉnh động này. Nếu chúng ta di chuyển con trỏ qua một tên sinh viên, chúng ta sẽ thấy một hộp di chuột hiển thị phía trên tên. Giả sử rằng chúng ta muốn cạo dữ liệu trên hộp di chuột. Hộp di chuột không thể hành động trừ khi chúng ta di chuyển con trỏ đến tên học sinh để kích hoạt nó. Khi chúng tôi làm điều đó, nếu chúng tôi kiểm tra trang web, chúng tôi sẽ thấy phần tử hộp Hover đã được thêm vào cấu trúc DOM của nó. Vì vậy, chúng ta có thể cạo dữ liệu trên hộp di chuột từ đó. Trong phân đoạn mã sau, chúng tôi sẽ loại bỏ nội dung trên hộp di chuột của sinh viên Adam Adams,:

inputElement.send_keys(Keys.ENTER)
1

Trước tiên chúng tôi cần nhập lớp

head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
13 trong selenium
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
04. Chúng tôi tạo một đối tượng
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
13 bằng cách truyền đối tượng trình điều khiển. Sau đó, chúng tôi tìm thấy tên sinh viên đối tượng Adam Adams trong trang và di chuyển con trỏ trên đối tượng này bằng phương pháp
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
16. Sau đó, chúng tôi sử dụng phương thức
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
17 để thực hiện các hành động mà chúng tôi đã xây dựng trên đối tượng
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
13. Trong trường hợp này, hành động này làm cho hộp di chuột xuất hiện phía trên tên sinh viên. Khi điều này được thực hiện, phần tử hộp Hover được thêm vào cấu trúc DOM của trang. Bằng cách kiểm tra sự bổ sung mới này trong cấu trúc DOM, chúng ta có thể tìm thấy ID của hộp di chuột thông qua thuộc tính
head = driver.find_element_by_class_name("MY_HEADING_A")
frame_elem = head.find_element_by_class_name("PageText")

# Following is a pseudo code. 
# Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) 
# and then hit RETURN key.
## txt  = frame_elem.find_element_by_name("NUM")
## txt.send_keys(Key.4)
19 và do đó xóa nội dung của đối tượng hộp Hover được liên kết với ID đó.

Làm cách nào để điền vào hộp văn bản trong selen?

Sau đây là hai cách khác nhau bạn có thể nhập văn bản vào các trường hộp văn bản trong selen:...

> sendKeys () - Driver.FindEuity (). SendKeys () ;.

> Javascriptexecutor. - Trình điều khiển javascriptexecutor JSE = (javascriptexecutor)) - JSE. Executescript (tài liệu của người dùng.

Làm cách nào để nhập đầu vào trong selen?

Usage:...

Sử dụng các khóa.enter: nhập org.openqa.selenium.Keys;trình điều khiển.findelement (by.id ("Element_id")). sendKeys (keys.enter) ;.

Sử dụng các khóa.return: Nhập org.openqa.selenium.Keys;trình điều khiển.findelement (by.id ("Element_id")). sendKeys (keys.return) ;.

Làm cách nào để điền vào dạng selen?

Approach...

Nhập selen và mô -đun thời gian ..

Thêm đường dẫn trình điều khiển Chrome và URL hình thức ..

Thêm một số độ trễ, cho đến khi trang được tải đầy đủ ..

Thêm dữ liệu dưới dạng danh sách ..

Lặp lại thông qua từng dữ liệu và điền chi tiết ..

Đóng cửa sổ..

Làm thế nào để bạn nhập một hộp văn bản bằng Python bằng Selenium?

Chúng tôi có thể gửi đầu vào bàn phím đến hộp văn bản trên trang web trong selenium webdriver trong Python bằng phương thức send_keys.Văn bản được nhập được truyền dưới dạng tham số cho phương thức đó.Để thực hiện các hành động bàn phím, chúng tôi cũng có thể sử dụng phương thức Send_Keys và sau đó vượt qua các khóa lớp.using the method send_keys. The text to be entered is passed as a parameter to that method. To perform keyboard actions, we can also use the send_keys method and then pass the class Keys.using the method send_keys. The text to be entered is passed as a parameter to that method. To perform keyboard actions, we can also use the send_keys method and then pass the class Keys.