2013-02-20 46 views
7
साथ Watir-webdriver

तो, हम हमारे पेज में निम्न कोड है:तत्व के चारों ओर एक रास्ता दृश्य में स्क्रॉल नहीं किया जा सकता - रूबी

<div class="toggle-wrapper"> 
    <input id="HasRegistration_true" class="registration_required toggle" type="radio" value="True" name="HasRegistration" data-val-required="The HasRegistration field is required." data-val="true"> 
    <label for="HasRegistration_true" class="">On</label> 
    <input id="HasRegistration_false" class="registration_required toggle" type="radio" value="False" name="HasRegistration" checked="checked"> 
    <label class="checked" for="HasRegistration_false">Off</label> 
</div> 

इन 2 रेडियो बटन हैं। 'चालू और बंद'। 'ऑफ' डिफ़ॉल्ट मान है।

वॉटर-वेबड्राइवर और रूबी का उपयोग करके, हम 'ऑन' रेडियो बटन का चयन करना चाहते हैं। हम इस तरह ऐसा:

browser.radio(:id => "HasRegistration_true").set 

लेकिन ऐसा करने में, हम निम्न त्रुटि मिलती है:,

`WebElement.clickElement': Element cannot be scrolled into view:[object HTMLInputElement] (Selenium::WebDriver::Error::MoveTargetOutOfBoundsError) 

हम सेलेनियम पता 2 स्क्रॉल तत्व को पेज तो नीचे स्क्रॉल करने की कोशिश कर बेकार है। हम हमेशा वॉटर-वेबड्राइवर और रूबी के नवीनतम रिलीज का उपयोग कर रहे हैं।

हम पृष्ठ के HTML को नहीं बदल सकते क्योंकि हम क्यूए इंजीनियरों हैं। सीएसएस का उपयोग कर

browser.element(:xpath, "//input[@id='HasRegistration_true']").click 

या

वैकल्पिक रूप से अगर यह एक छिपा तत्व का पता लगाने की कोशिश कर रहे है तो आप से बेहतर कर रहे हैं:

+3

मैं केवल एचटीएमएल प्रदान किए गए पृष्ठ के साथ अपनी समस्या का पुनरुत्पादन नहीं कर सका। क्या आपकी समस्या को पुन: पेश करने के लिए आवश्यक पृष्ठ है? आपके ब्राउजर ने क्या प्रयास किया (यानी यह सभी ब्राउज़रों में होता है)? आप नवीनतम वॉटर-वेबड्राइवर मणि का उपयोग करके उल्लेख करते हैं, लेकिन क्या आप यह भी सुनिश्चित करते हैं कि सेलेनियम-वेबड्राइवर अद्यतित है? –

+0

आप कहते हैं "हम जानते हैं कि सेलेनियम 2 पृष्ठ को तत्व पर स्क्रॉल करता है ..." क्या आप इस पर विस्तार कर सकते हैं? तुम यह कैसे जानते हो? क्या आप इसे देख रहे हैं? –

+0

क्या पृष्ठ पर बहुत सारे अजाक्स सामान हो रहे हैं? ब्राउज़र को 'लोडिंग' करने के बाद पृष्ठ के भाग प्रदान किए जा रहे हैं आपकी समस्या 'तैयार' होने से पहले तत्व के साथ बातचीत करने की कोशिश करने से रोक सकती है या पृष्ठ पर कुछ अंतिम स्थिति में स्थानांतरित हो गई है, दूसरे शब्दों में सिंक्रनाइज़ेशन समस्या। आप आईआरबी के माध्यम से मैन्युअल रूप से आदेशों को आज़मा सकते हैं और देख सकते हैं कि वे काम करते हैं, अगर वे करते हैं, तो आमतौर पर सिंक समस्या –

उत्तर

0

सबसे पहले तत्व XPath का उपयोग कर पता लगाने की कोशिश करो। फ़ायरफ़ॉक्स के लिए फ़ायरबग ऐड-ऑन डाउनलोड करें और अपने तत्व के सीएसएस पथ की प्रतिलिपि बनाएँ।

यह होना चाहिए कुछ की तरह:

browser.element(:css => "the CSS path you have copied from Firebug").click 

2 में से एक यह तुम्हारे लिए क्या करना चाहिए !!

शुभकामनाएँ!

0

आप रेडियो तत्व सेटटेबल बनाने के लिए कुछ जावास्क्रिप्ट निष्पादित करके फ्लाई पर एचटीएमएल में हेरफेर कर सकते हैं। @browser.execute_script("your javascript here")

मैं एक लेबल टैग जो यह इनपुट टैग मैं पर कार्य करने के प्रयास कर रहा था के रास्ते से बाहर ले जाया गया से बाहर वर्ग पट्टी के लिए निम्न जावास्क्रिप्ट की तरह कुछ प्रयोग किया है: एक पृष्ठ पर जावास्क्रिप्ट निष्पादित करने के लिए, कुछ पसंद है क्रोम विशिष्ट समस्या के लिए मेरे पास था। execute_script("$(\"label.classname\").removeClass(\"classname inline\")")

+0

सवाल यह नहीं बताता है कि रेडियो तत्व सेटटेबल नहीं है; केवल इतना है कि उन्हें स्क्रॉल करने में कठिनाई होती है। –

0

तत्व एक रूप और एक div (लपेटें) वर्ग मैंने पाया कि मैं "https://quote.comparethemarket.com/Motor/Motor/AboutYourVehicle.aspx?" पृष्ठ पर 'नहीं' रेडियो बटन क्लिक करने के लिए निम्न करना पड़ा भीतर निहित है, तो:

div_list = @ browser.form (: कार्रवाई => "? AboutYourVehicle.aspx ton_t = CTMMO & prdcls = पीसी & rqstyp = newmotorquote & AFFCLIE = CM01")। div (: वर्ग => "inputWrap")। divs (: class => "custom-radio")

और फिर: div_list [1]।क्लिक

आशा इससे आपकी समस्या का हल भी :-)

1

यहाँ दो समाधान है कि मेरे लिए काम किया है इस प्रकार हैं:

एक रूबी मणि watir-scroll कहा जाता है कि काम कर सकते हैं नहीं है।

browser.radio(:id, "HasRegistration_true").focus 
browser.radio(:id, "HasRegistration_true").set 
:

फिर

require 'watir-scroll' 
browser.scroll.to browser.radio(:id, "HasRegistration_true") 

आप एक मणि को जोड़ने के लिए नहीं करना चाहते हैं, मेरे सह कार्यकर्ता कुछ है कि कुछ हद तक आश्चर्यजनक रूप से (मेरे लिए) उपरोक्त कोड के रूप में ही प्रभाव नहीं पड़ा सुझाव

मेरे कोड में, "। फोकस" सीधे उस तत्व पर स्क्रॉल किया गया जो पहले दिखाई नहीं दे रहा था। यह आपके लिए भी काम कर सकता है।