2010-03-30 15 views
10

मैंने सेलेनियम को ड्रॉप डाउन मेनू से 'ऑनचेंज' ईवेंट लेने के लिए कई चीजों की कोशिश की है, जिनमें से कोई भी काम नहीं कर पाया है।सेलेनियम ऑन चेंज काम नहीं कर रहा

हमलावर HTML है:

<select onchange="doOpperation(this.options[this.selectedIndex]); this.selectedIndex = 0;" name="opps_ondemand" id="opps_ondemand"> 
    <option value="none" id="ondemand">Mark as...</option> 
    <option cmd="blah1" value="add">Something</option> 
    <option cmd="blah2" value="remove">None</option> 
</select> 

मैंने पढ़ा है कि सेलेनियम आईडीई * घटनाओं पर कुछ रिकॉर्ड नहीं करता है, और इसलिए यह fireEvent() का उपयोग करने के लिहाज से होगा:

$this->click("opps_ondemand"); 
$this->select("opps_ondemand", "label=Mark as..."); 
$this->click("//option[@value='add']"); 
sleep(3); 
$this->fireEvent("//select[@id='opps_ondemand']", "change"); 

हालांकि, यह काम नहीं करता है (फायरएवेंट के साथ या उसके बिना)। मैं भी का उपयोग कर

$this->fireEvent("locator", "click"); 

$this->click("locator"); 

के बजाय की कोशिश की है, लेकिन यह कुछ नहीं किया।

सेलेनियम इन locators के बारे में शिकायत नहीं करता है, इसलिए मुझे लगता है कि यह चुनिंदा/विकल्प तत्व ठीक देख सकता है। समस्या ऑन चेंज घटना प्रतीत होती है।

क्या कोई यह जानता है कि इसे कैसे हल किया जाए?

धन्यवाद।

+0

कौन सा ब्राउज़र का उपयोग कर रहे हैं? – John

+0

मैं फ़ायरफ़ॉक्स 3.5.8 पर परीक्षण कर रहा हूं। – tohop

उत्तर

2

ने इसे आजमाया?

$this->fireEvent("opps_ondemand", "onchange"); 

फ़ायरवेन्ट (element_id, event_to_trigger);

5

मैं बिल्कुल इस समस्या का सामना करना पड़ा है, लेकिन IE में केवल (फ़ायरफ़ॉक्स और गूगल क्रोम मेरे लिए ठीक काम करता है)

मैंने पाया समाधान मैन्युअल रूप से अद्यतन सेलेनियम के runScript के माध्यम से जावास्क्रिप्ट का उपयोग के लिए मजबूर किया जाना है। कुछ तरीके कि ऐसा करने के लिए यहां पाया जा सकता:

How do I programmatically force an onchange event on an input?

उदाहरण के लिए, अगर मैं अपने वेब पेज में jQuery है, मैं यह कर जाएगा:

$this->select('IDOfSelectElement', '*some label*'); 
$this->runScript("$('#IDOfSelectElement').trigger('change')"); 
+0

धन्यवाद! यह मेरे लिए काम किया। – sonicwizard

संबंधित मुद्दे