2011-12-05 9 views
6

तो मेरे सेलेनियम रिग्रेशन परीक्षणों के भीतर, मैं एक नया एपेट करने के लिए कैलेंडर पर डबल क्लिक करने का प्रयास कर रहा हूं। मैंने डबलक्लिक() का उपयोग करने का प्रयास किया है; उन्नतuserinteractions पुस्तकालय के भीतर विधि, लेकिन एक मुद्दा है; दो क्लिक एक वास्तविक डबल-क्लिक को आग लगाने के लिए पर्याप्त तेज़/पर्याप्त रूप से पर्याप्त नहीं हैं! क्या किसी को उनके परीक्षण में इससे निपटने का कोई तरीका मिला है?सेलेनियम 2.0 वेबड्राइवर एडवांस्ड इंटरैक्शन डबलक्लिक सहायता (सी #)

+0

भी, कैलेंडर मैं इस जैसे कार्यों का उपयोग कर रहा एक: [कड़ी] (http: //google.latest.gwt- web-calendar.appspot.com) – spacebed

+0

दुर्भाग्य से लिंक एक नई नियुक्ति बनाने के लिए खाली कैलेंडर पर डबल क्लिक करने की अनुमति नहीं देता है। हालांकि मैं मौजूदा कैलेंडर पर डबल क्लिक करने और इसे सफलतापूर्वक खोलने में सक्षम था। मैंने जावा में यद्यपि एक्शन एपीआई का इस्तेमाल किया था। सुनिश्चित नहीं है कि यह कुछ ऐसा है जिसे आप ढूंढ रहे हैं।यदि आप रुचि रखते हैं तो मैं कोड पोस्ट कर सकता हूं – nilesh

+0

आप सही हैं, लेकिन पहले से पंजीकृत पर डबल क्लिक अनुकरण करने के लिए भी मेरे वास्तविक एप्लिकेशन के लिए काम नहीं करता है। हालांकि मुझे कोड में दिलचस्पी है, क्योंकि यह मुझे सी # समतुल्य को समझने में मदद कर सकता है। – spacebed

उत्तर

18

यह कोड मेरे लिए काम करता है!

Actions action = new Actions(driver); 
action.doubleClick(myElemment); 
action.perform(); 
+0

मैंने कोशिश की है, लेकिन क्रियाएं डबलक्लिक() विधि दोनों क्लिकों को दो कारणों से डबल क्लिक के रूप में पंजीकृत करने के लिए पर्याप्त तेज़ नहीं करती है .. – spacebed

+0

ठीक है, मैंने सेलेनियम के वर्तमान निर्माण में अपडेट किया है, और (कोई कोड परिवर्तन नहीं हुआ है) यह अब तेजी से फायर फायर हाहा। हालांकि मैं इसे समाधान के रूप में चिह्नित करूंगा, क्योंकि मुझे लगता है कि क्रियाएं ड्राइवर जाने का सबसे सरल/सबसे प्रभावी तरीका है। – spacebed

0

क्या आपने IWebElement को पकड़ने और फिर इसे दो बार क्लिक करने का प्रयास किया है?

IWebElement element = driver.FindElement(By.Id("yourID")); 
element.Click(); 
element.Click(); 

मैं अगर यह आप desird कार्यक्षमता या नहीं देना होगा, लेकिन मुझे पता है कि जब मैं निष्पादित यह उपरोक्त के समान एक क्लिक करें घटना एक डबल क्लिक करें एक वास्तविक उपयोगकर्ता से हो उतना निकट चलाता है पता नहीं है।

अन्य विकल्प लेकिन इस का केवल नकारात्मक पक्ष यह है कि मुझे यकीन है कि यह वर्तमान IWebDriver साथ अच्छी तरह से खेलता है मैं इसे की जरूरत है यह IWebDriver की खुद इन्स्टेन्शियशन है लगता है नहीं कर रहा हूँ, संदर्भ के लिए ThoughtWorks.Selenium.Core है।

+0

अफसोस की बात यह काम नहीं करती है। मैंने उन्नत यूज़र इंटरैक्शन से पहले यह कोशिश की, लेकिन न तो वास्तव में डबल क्लिक करने लगते हैं। – spacebed

2

यहां जावा समतुल्य है। यह कोड अंधेरे से पहले कार्यक्रम को खोल देगा। आप एक विशिष्ट घटना आदि खोलने के लिए कुछ तर्क जोड़ सकते हैं। यह कोड काम करता है! (2.12 के साथ परीक्षण)

List<WebElement> events = driver.findElements(By.cssSelector("div.dv-appointment")); 
for(WebElement event:events){ 
    WebElement body = event.findElement(By.cssSelector("div.body"));    
    if(!body.getText().isEmpty()) //or open a known event 
    { 
     System.out.println(body.getText()); //open the first event 
     Actions builder = new Actions(driver); 
     Action doubleClick = builder.doubleClick(event) 
            .build(); 
     doubleClick.perform(); 
     break;     
    } 
} 
1

मैं भी समस्या जहां सेलेनियम के डबलक्लिक घटना फ़ायरफ़ॉक्स में काम करता है लेकिन क्रोम में कोई प्रभाव नहीं है था "का उपयोग" मत भूलना। सेलेनियम में अपग्रेड करने में मदद नहीं मिली; मेरे पास पहले से ही नवीनतम संस्करण है। (मेरा पर्यावरण उबंटू 14.04 है, पायथन 2.7.6, सेलेनियम 2.44.0, फ़ायरफ़ॉक्स 35.0, क्रोम 40.0.2214.91।)

मुझे यकीन नहीं है कि क्यों सीबीआरआरसर का जवाब डाउनवॉट किया गया था। मैंने दो क्लिक घटनाओं का उपयोग कर समस्या के चारों ओर सफलतापूर्वक काम किया। यह फ़ायरफ़ॉक्स और क्रोम दोनों में काम करता है। इसके दो तरीके हैं, और दोनों मेरे लिए काम करते हैं।

पहला तरीका:

elem = driver.find_element_by_css_selector('#myElement') 
elem.click() 
elem.click() 

दूसरा तरीका:

elem = driver.find_element_by_css_selector('#myElement') 
actions = webdriver.ActionChains(driver) 
actions.click(elem).click(elem).perform() 
1

मैं काफी यहां इस्तेमाल किया, कार्यों पहले, प्रदर्शन, विशेष रूप से कतार तब से है कि बार-बार आवेदन की अनुमति देता है दृष्टिकोण की तरह actionchain।

http://selenium-python.readthedocs.org/en/latest/api.html#selenium.webdriver.common.action_chains.ActionChains

प्रलेखन उदाहरण जुड़ा हुआ से:

menu = driver.find_element_by_css_selector(".nav") 
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1") 

actions = ActionChains(driver) 
actions.move_to_element(menu) 
actions.click(hidden_submenu) 
actions.perform() 
संबंधित मुद्दे