Tôi gặp sự cố - Tôi đang sử dụng trình điều khiển web selenium (firefox) để mở trang web, nhấp vào một vài liên kết, v.v. sau đó chụp ảnh màn hình.Python - Selenium WebDriver - Kiểm tra phần tử tồn tại
Tập lệnh của tôi chạy tốt từ CLI, nhưng khi chạy qua cronjob, nó sẽ không vượt qua kiểm tra find_element() đầu tiên. Tôi cần phải thêm một số gỡ lỗi, hoặc một cái gì đó để giúp tôi tìm ra lý do tại sao nó không thành công.
Về cơ bản, tôi phải nhấp vào liên kết 'đăng nhập' trước khi truy cập trang đăng nhập. Các cấu trúc của nguyên tố này là:
<a class="lnk" rel="nofollow" href="/login.jsp?destination=/secure/Dash.jspa">log in</a>
Tôi đang sử dụng find_element Bằng phương pháp LINK_TEXT:
login = driver.find_element(By.LINK_TEXT, "log in").click()
Tôi là một chút của một Python Noob, vì vậy tôi đang chiến đấu với ngôn ngữ một chút ..
A) Làm thế nào để kiểm tra xem liên kết có thực sự được chọn bởi python không? Tôi có nên sử dụng khối try/catch không?
B) Có cách nào tốt hơn/đáng tin cậy hơn để định vị phần tử DOM hơn LINK_TEXT không? Ví dụ. Trong JQuery, bạn có thể sử dụng một bộ chọn cụ thể hơn $ ('a.lnk: contains (log in)'). Do_something();
Tôi đã giải quyết được vấn đề chính và đó chỉ là vấn đề về ngón tay - Tôi đang gọi tập lệnh có thông số không chính xác - Lỗi đơn giản.
Tôi vẫn muốn một số gợi ý về cách kiểm tra xem một thành phần có tồn tại hay không. Ngoài ra, một ví dụ/giải thích về các hàm Waits ngầm/rõ ràng thay vì sử dụng một cuộc gọi crappy time.sleep().
Chúc mừng, ns
Bạn cũng có thể tìm các thành phần theo định vị CSS hoặc xpath. Có xu hướng ít giòn hơn so với nội dung văn bản. –
Tôi tin rằng cả hai - sử dụng nội dung văn bản và XPATH/CSS - là mong manh để thay đổi nhỏ trong thiết kế chứ không phải là logic ứng dụng. Cách tốt hơn là tìm phần tử bằng 'id',' class_name' hoặc 'name'. –