2011-12-20 45 views
7

Có cách nào để cài đặt tốc độ thực thi Trình điều khiển Web của Selenium bằng ruby ​​hay không.setSpeed ​​trong Selenium WebDriver sử dụng Ruby

Trong perl cho selen 1 (RC) đã có $sel->set_speed("500");

Nhưng do một số hạn chế của Selenium RC, tôi đã phải chuyển sang Selenium Webdriver và phải bắt đầu sử dụng Ruby, và tôi không thể tìm thấy chức năng cho tương tự.

Đọc ở đâu đó các tùy chọn "Chậm", "Trung bình" và "Nhanh" làm đối số để đặt tốc độ trong C# và Perl, nhưng không phải trong Ruby.

Lưu ý - Tôi có thời gian chờ được đặt với số @driver.manage.timeouts.implicit_wait = 30 nhưng tôi đang tìm tốc độ thực thi.

Trả lời

10

Các phương pháp để đặt tốc độ thực thi trong WebDriver không còn được dùng cho tất cả các liên kết ngôn ngữ một thời gian trước đây. Không còn có thể sửa đổi tốc độ thực thi của mã WebDriver đang chạy.

+0

Vì vậy, cách tốt nhất để giải quyết vấn đề là gì, khi nhấp vào liên kết - một popup sẽ mở ra và tôi cần gửi chìa khóa tới hộp văn bản trong cửa sổ bật lên đó. Cửa sổ bật lên đôi khi mất nhiều thời gian hơn để tải, do đó hàm find_element của id hộp văn bản đó không thành công mặc dù nó xuất hiện. Tôi nghĩ rằng nỗ lực tìm kiếm id phần tử bắt đầu ngay lập tức và mặc dù cửa sổ bật lên tải tốt trước 30 giây (thời gian chờ rõ ràng của tôi), các tập lệnh không thành công. – Amey

+1

Bạn cần một số loại thói quen chờ rõ ràng; chờ đợi tiềm ẩn có thể không giúp bạn ở đây. Trong các ngôn ngữ được hỗ trợ trực tiếp bởi dự án (Java, .NET, Ruby, Python), điều này có thể được thực hiện bằng cách sử dụng lớp 'WebDriverWait' (hoặc tương đương của nó). Ngoài ra, câu trả lời phụ thuộc một chút vào những gì bạn có nghĩa là bởi "popup". Đây có phải là cửa sổ trình duyệt mới không? Nếu vậy, bạn sẽ cần sử dụng driver.switch_to.window() để tập trung vào đúng ngữ cảnh. Nếu đó là "cửa sổ bật lên" được tạo bởi khung công cụ JavaScript như jQuery hoặc tương tự, thì hàm find_element của bạn trong thói quen chờ đợi của bạn. – JimEvans

+0

Vì vậy, cửa sổ bật lên cửa sổ mới, ủy quyền được liên kết trong Đăng nhập để chính xác hơn. Và tôi làm điều khiển chuyển sang cửa sổ mới, bằng cách sử dụng tay cầm = @ driver.window_handles @ driver.switch_to.window (xử lý [1]) ... nhưng điều xảy ra là .. cửa sổ bật lên có thể giống như một hoặc hai giây để thực sự "bật lên" trong đó chuyển sang cửa sổ không thành công và tất cả các bước ở đó rõ ràng là không thành công. Tôi hiện đã đưa vào vị trí .. một giấc ngủ của 2 giây (giữa nhấp vào liên kết và chờ đợi để chuyển sang cửa sổ mới). Nhưng tôi chắc chắn có một cách tốt hơn. – Amey

0

Theo http://selenium.googlecode.com/svn/tags/selenium-2.10.0/rb/lib/selenium/client/idiomatic.rb trong có 2 phương pháp Selenium.Client.Idiomatic mô-đun:

# Get execution delay in milliseconds, i.e. a pause delay following 
    # each selenium operation. By default, there is no such delay 
    # (value is 0). 
    def execution_delay 
    string_command "getSpeed" 
    end 

    # Set the execution delay in milliseconds, i.e. a pause delay following 
    # each selenium operation. By default, there is no such delay. 
    # 
    # Setting an execution can be useful to troubleshoot or capture videos 
    def execution_delay=(delay_in_milliseconds) 
    remote_control_command "setSpeed", [delay_in_milliseconds] 
    end 

Tôi cho rằng điều này sẽ giúp.

+1

Nope không hoạt động, các chức năng này là một phần của mô-đun Idiomatic Client Selenium, mà không được bao gồm trong mô-đun Webdriver? Tôi nghĩ. – Amey

+0

Đây là lỗi tôi nhận được btw 'NoMethodError: phương thức undefined' execution_delay 'cho # ' – Amey

Các vấn đề liên quan