2011-12-20 14 views
7

का उपयोग कर सेलेनियम वेबड्राइवर में सेटस्पेड रूबी में सेलेनियम वेबड्राइवर निष्पादन गति सेट करने का कोई तरीका है।रूबी

सेलेनियम 1 (आरसी) के लिए पर्ल में $sel->set_speed("500");

लेकिन सेलेनियम आर सी से कुछ की कमी के कारण, मैं सेलेनियम Webdriver को शिफ्ट करने के लिए था और रूबी का उपयोग शुरू करने के लिए किया था, और मैं के लिए समारोह नहीं मिल सकता है वही।

सी # और पर्ल में गति सेट करने के लिए तर्कों के रूप में "धीमा", "मध्यम" और "फास्ट" विकल्पों को कहीं भी पढ़ें, लेकिन रुबी में नहीं।

नोट - मेरे पास इस @driver.manage.timeouts.implicit_wait = 30 के साथ टाइमआउट सेट है लेकिन मैं निष्पादन गति की तलाश में हूं।

उत्तर

10

वेबड्राइवर में निष्पादन गति को सेट करने के तरीके कुछ समय पहले सभी भाषा बाइंडिंग के लिए बहिष्कृत किए गए थे। चल रहे वेबड्राइवर कोड की निष्पादन गति को संशोधित करना अब संभव नहीं है।

+0

तो किसी समस्या को हल करने का सबसे अच्छा तरीका क्या है, जहां एक लिंक पर क्लिक करने पर- एक पॉपअप खुलता है , और मुझे उस पॉपअप में टेक्स्टबॉक्स में कुंजी भेजने की आवश्यकता है। कभी-कभी पॉपअप को लोड करने में अधिक समय लगता है, जिसके कारण उस टेक्स्टबॉक्स आईडी का find_element विफल रहता है, भले ही यह दिखाई देता है। मुझे लगता है कि तत्व आईडी को खोजने का प्रयास तुरंत शुरू होता है और भले ही पॉपअप 30 सेकंड (मेरे स्पष्ट टाइमआउट) से पहले लोड हो जाता है, स्क्रिप्ट विफल हो जाती है। – Amey

+1

आपको कुछ प्रकार की स्पष्ट प्रतीक्षा दिनचर्या की आवश्यकता है; निहित इंतजार आपकी मदद नहीं कर सकता है। प्रोजेक्ट (जावा, .NET, रूबी, पायथन) द्वारा सीधे समर्थित भाषाओं में, इसे 'WebDriverWait' कक्षा (या उसके समतुल्य) का उपयोग करके पूरा किया जा सकता है। साथ ही, उत्तर "पॉपअप" द्वारा आपके द्वारा किए गए अर्थों पर थोड़ा सा निर्भर करता है। क्या यह एक नई ब्राउज़र विंडो है? यदि ऐसा है, तो आपको अपना ध्यान सही संदर्भ में रखने के लिए driver.switch_to.window() का उपयोग करना होगा। यदि यह एक "पॉपअप" है, तो कहें, जावास्क्रिप्ट विजेट फ्रेमवर्क जैसे jQuery या इसी तरह, आपकी प्रतीक्षा दिनचर्या में your find_element। – JimEvans

+0

तो यह एक नई विंडो पॉपअप है, एक लिंक्डइन लॉगिन प्रमाणीकरण अधिक सटीक होने के लिए। और मैं हैंडल = @ driver.window_handles @ driver.switch_to.window (हैंडल [1]) का उपयोग कर नई विंडो में स्थानांतरित करता हूं ... लेकिन क्या होता है .. पॉपअप एक या दो की तरह हो सकता है वास्तव में "पॉप-अप" के लिए, जिसके दौरान विंडो में स्विचिंग विफल हो जाती है, और स्पष्ट रूप से असफल होने पर सभी कदम विफल होते हैं। मैंने वर्तमान में जगह बनाई है .. 2 सेकंड की नींद (लिंक पर क्लिक करने और नई विंडो में स्विच करने के इंतजार के बीच)। लेकिन मुझे यकीन है कि एक बेहतर तरीका है। – Amey

0

में वहाँ 2 तरीकों Selenium.Client.Idiomatic मॉड्यूल हैं http://selenium.googlecode.com/svn/tags/selenium-2.10.0/rb/lib/selenium/client/idiomatic.rb के अनुसार:

# 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 

मैं इस में मदद मिलेगी लगता है।

+1

नहीं जो काम नहीं करता है, ये फ़ंक्शन सेलेनियम क्लाइंट इडियोमैटिक मॉड्यूल का हिस्सा हैं, जो वेबड्राइवर मॉड्यूल में शामिल नहीं है? मुझे लगता है। – Amey

+0

यह त्रुटि है कि मुझे बीटीडब्ल्यू 'नोमूथइरर: अपरिभाषित विधि' execution_delay '# <सेलेनियम :: वेबड्राइवर :: ड्राइवर: 0x101534678> ' – Amey