Selenium python location_once_scrolled_into_view
Khi sử dụng Selenium WebDriver, bạn có thể gặp phải tình huống cần cuộn một phần tử vào chế độ xem Show
Bằng cách chạy các lệnh trong các bước sau, bạn có thể tương tác thử một giải pháp bằng Google Chrome 1. Thiết lập môi trường đầu và cài đặt gói SeleniumThói quen thông thường của tôi khi bắt đầu một dự án đầu như thế này là thiết lập một môi trường Python sạch với virtualenv # In your shell: mkdir scrolling cd scrolling/ virtualenv env . env/bin/activate pip install selenium 2. Khởi chạy trình thông dịch Python, mở phiên Chrome bằng gói selen và điều hướng đến Google Tin tức$ python ... >>> from selenium import webdriver >>> d = webdriver.Chrome() >>> d.get("http://news.google.com/") 3. Xác định phần tử dùng làm tiêu đề cho phần "Phổ biến nhất" của trang, sau đó cuộn đến phần tử đó bằng cách thực thi hàm JavaScript scrollIntoView()>>> element = d.find_element_by_xpath("//span[.='Most popular']") >>> element.text u'Most popular' >>> d.execute_script("return arguments[0].scrollIntoView();", element) Lưu ý rằng các liên kết Python WebDriver cũng cung cấp thuộc tính hiện cuộn phần tử vào chế độ xem khi được truy xuất Tuy nhiên, thuộc tính đó được ghi chú trong tài liệu mô-đun selen là có thể thay đổi mà không có cảnh báo - và nó cũng đặt phần tử ở cuối chế độ xem (chứ không phải trên cùng), vì vậy tôi thích sử dụng scrollIntoView() 4. Cuộn phần tử xuống một vài px về phía trung tâm của chế độ xem, nếu cầnSau khi mã ở trên cuộn phần tử lên trên cùng của cửa sổ, bạn có thể thấy mình cần cuộn tài liệu ngược lại để di chuyển phần tử một chút về phía giữa cửa sổ - điều này có thể cần thiết nếu phần tử bị ẩn dưới phần tử khác (ví dụ: Việc cuộn như vậy rất dễ thực hiện - JS này cuộn tài liệu về phía sau 150px, đặt phần tử của bạn gần trung tâm của chế độ xem hơn >>> d.execute_script("window.scrollBy(0, -150);") Đó là tất cả cho bây giờ; Nói chung, tất cả các thao tác thú vị tương tác với tài liệu sẽ được thực hiện thông qua giao diện này Tất cả các cuộc gọi phương thức sẽ thực hiện kiểm tra độ mới để đảm bảo rằng tham chiếu phần tử vẫn hợp lệ. Về cơ bản, điều này xác định xem phần tử có còn được gắn vào DOM hay không. Nếu thử nghiệm này không thành công, thì một element = element.find_elements(By.CLASS_NAME, 'foo')7 sẽ bị ném và tất cả các lần gọi tới phiên bản này trong tương lai sẽ không thành công element = element.find_elements(By.CLASS_NAME, 'foo')8 Trả về Cấp độ ARIA của phần tử web hiện tại element = element.find_elements(By.CLASS_NAME, 'foo')9 Trả về vai trò ARIA của phần tử web hiện tại # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")0 ()→ Không có Xóa văn bản nếu đó là thành phần nhập văn bản # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")1 ()→ Không có Nhấp vào phần tử # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")2 ( by='id', value=None )→ selen. webdriver. Xa xôi. phần tử web. WebYếu tố Tìm phần tử đã cho a Bằng chiến lược và bộ định vị Cách sử dụngelement = element.find_element(By.ID, 'foo')loại trả lại # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")3 ( by='id', value=None )→ danh sách Tìm các phần tử đã cho a Theo chiến lược và định vị Cách sử dụngelement = element.find_elements(By.CLASS_NAME, 'foo')loại trả lại danh sách WebElement # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")4 ( tên )→ str Nhận thuộc tính hoặc thuộc tính đã cho của phần tử Phương thức này trước tiên sẽ cố gắng trả về giá trị của thuộc tính có tên đã cho. Nếu một thuộc tính có tên đó không tồn tại, nó sẽ trả về giá trị của thuộc tính có cùng tên. Nếu không có thuộc tính nào có tên đó, thì trả về # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")5 Các giá trị được coi là trung thực, tương đương với “true” hoặc “false”, được trả về dưới dạng boolean. Tất cả các giá trị khác không phải ______7_______5 được trả về dưới dạng chuỗi. Đối với các thuộc tính hoặc thuộc tính không tồn tại, # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")5 được trả về Để có được giá trị chính xác của thuộc tính hoặc thuộc tính, hãy sử dụng các phương pháp # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")8 hoặc # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")9 tương ứnglập luận
Thí dụ # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class") text_length = target_element.get_dom_attribute("class")0 ( tên )→ str Lấy thuộc tính đã cho của phần tử. Không giống như text_length = target_element.get_dom_attribute("class")1, phương thức này chỉ trả về các thuộc tính được khai báo trong phần đánh dấu HTML của phần tử
text_length = target_element.get_dom_attribute("class") text_length = target_element.get_dom_attribute("class")2 ( tên )→ str. bool. WebYếu tố. mệnh lệnh Lấy thuộc tính đã cho của phần tử lập luận
text_length = target_element.get_property("text_length") text_length = target_element.get_dom_attribute("class")3 ID nội bộ được sử dụng bởi Selenium Cái này chủ yếu dùng nội bộ. Các trường hợp sử dụng đơn giản như kiểm tra xem 2 phần tử web có tham chiếu đến cùng một phần tử hay không, có thể được thực hiện bằng cách sử dụng text_length = target_element.get_dom_attribute("class")4 if element1 == element2: print("These 2 are equal") text_length = target_element.get_dom_attribute("class")5 ()→ bool Liệu phần tử có hiển thị với người dùng hay không text_length = target_element.get_dom_attribute("class")6 ()→ bool Trả về xem phần tử có được bật hay không text_length = target_element.get_dom_attribute("class")7 ()→ bool Trả về phần tử có được chọn hay không Có thể được sử dụng để kiểm tra xem hộp kiểm hoặc nút radio có được chọn không text_length = target_element.get_dom_attribute("class")8 Vị trí của phần tử trong canvas có thể hiển thị text_length = target_element.get_dom_attribute("class")9 TÀI SẢN NÀY CÓ THỂ THAY ĐỔI MÀ KHÔNG CÓ CẢNH BÁO. Sử dụng công cụ này để khám phá vị trí của một phần tử trên màn hình để chúng ta có thể nhấp vào phần tử đó. Phương pháp này sẽ khiến phần tử được cuộn vào chế độ xem Trả về vị trí góc trên cùng bên trái trên màn hình hoặc # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")5 nếu phần tử không hiển thị text_length = target_element.get_property("text_length")1 Tham chiếu nội bộ đến phiên bản WebDriver, phần tử này được tìm thấy từ text_length = target_element.get_property("text_length")2 Một từ điển với kích thước và vị trí của phần tử text_length = target_element.get_property("text_length")3 ( tên tệp )→ bool Lưu ảnh chụp màn hình của phần tử hiện tại vào tệp hình ảnh PNG. Trả về Sai nếu có bất kỳ IOError nào, ngược lại trả về True. Sử dụng đường dẫn đầy đủ trong tên tệp của bạn lập luận
element.screenshot('/Screenshots/foo.png') text_length = target_element.get_property("text_length")4 Nhận ảnh chụp màn hình của phần tử hiện tại dưới dạng chuỗi được mã hóa base64 Cách sử dụngimg_b64 = element.screenshot_as_base64 text_length = target_element.get_property("text_length")5 Nhận ảnh chụp màn hình của phần tử hiện tại dưới dạng dữ liệu nhị phân Cách sử dụngelement_png = element.screenshot_as_png text_length = target_element.get_property("text_length")6 ( *giá trị )→ Không có Mô phỏng gõ vào phần tử lập luận
Sử dụng điều này để gửi các sự kiện quan trọng đơn giản hoặc để điền vào các trường biểu mẫu form_textfield = driver.find_element(By.NAME, 'username') form_textfield.send_keys("admin") Điều này cũng có thể được sử dụng để thiết lập đầu vào tập tin element = element.find_elements(By.CLASS_NAME, 'foo')0 text_length = target_element.get_property("text_length")7 Trả về một gốc bóng tối của phần tử nếu có một hoặc một lỗi. Chỉ hoạt động từ Chromium 96 trở đi. Các phiên bản trước của trình duyệt dựa trên Chromium sẽ đưa ra một ngoại lệ xác nhận Làm cách nào để cuộn vào chế độ xem trong Python Selenium?1 câu trả lời . từ selen. webdriver. phổ thông. action_chains nhập ActionChains phần tử = trình điều khiển. find_element_by_id("my-id") hành động = ActionChains(trình điều khiển) hành động. move_to_element(phần tử). trình diễn() Hoặc, bạn cũng có thể "cuộn vào chế độ xem" qua scrollIntoView() tài xế. exec_script("đối số[0]. scrollIntoView();", phần tử) Làm cách nào để cuộn phần tử trong Selenium?Cách cuộn đến phần tử trong Selenium . Bước 1. Chuẩn bị trang web để kiểm tra. Không phải tất cả các trang đều có thể cuộn được. . Bước 2. Tải trang bằng WebDriver. Bây giờ chúng ta có một trang để kiểm tra việc cuộn, hãy tải trang bằng Selenium WebDriver. . Bước 3. Xác định vị trí phần tử mục tiêu. . Bước 4. Di chuyển đến phần tử mục tiêu. . Bước 5. Chạy thử nghiệm Làm cách nào để tìm phần tử bằng XPath trong Selenium Python?Chuyển đến tab Tên và nhấp chuột phải >> Kiểm tra. Khi kiểm tra phần tử web, nó sẽ hiển thị thẻ đầu vào và các thuộc tính như lớp và id. Sử dụng id và các thuộc tính này để xây dựng XPath, do đó, sẽ định vị trường tên |