2010-05-12 13 views
6

मेरे पास उस पृष्ठ पर बटन है जिसका उपयोग किसी अन्य पृष्ठ के लिंक के रूप में किया जा रहा है। तो जब उपयोगकर्ता बटन पर क्लिक करता है तो उन्हें दाएं पृष्ठ पर रीडायरेक्ट किया जाता है।सेलेनियम: एचटीएमएल बटन तत्व पर क्लिक कैसे करें?

मैं PHPUnit के लिए सेलेनियम एक्सटेंशन का उपयोग कर रहा हूं और मैं यह जांचना चाहता हूं कि बटन सही ढंग से उपयोगकर्ता को रीडायरेक्ट कर रहा है। यहाँ एचटीएमएल कि मैं परीक्षण करने के लिए कोशिश कर रहा हूँ है:

<button onclick="window.location='/sponsor';" value="Continue" type="button" id="sponsorContinue" name="sponsorContinue">Continue</button> 

मैं बटन क्लिक करने के अलग-अलग तरीके का एक बहुत कोशिश की है, लेकिन मैं उनमें से किसी को काम करने के लिए प्राप्त करने के लिए प्रतीत नहीं कर सकते हैं:

$this->click("//button[@id='sponsorContinue']"); 

यह आदेश निष्पादित करता है और कोई त्रुटि नहीं फेंकता है, लेकिन पृष्ठ को पुनर्निर्देशित नहीं किया गया है। जब मैं मैन्युअल रूप से बटन पर क्लिक करता हूं तो यह ठीक काम करता है। मुझे क्या करना चाहिए?

+0

यह स्निपेट मेरे लिए ठीक काम कर रहा है। आप किस ब्राउजर/ओएस का उपयोग कर रहे हैं? जावास्क्रिप्ट-कम समाधान के लिए –

उत्तर

2

यहां समस्या है ... HTML गलत है, और यह उपयोगकर्ताओं को अगले पृष्ठ पर जारी रखने के लिए जावास्क्रिप्ट का उपयोग करने के लिए मजबूर कर रहा है। इसके बजाय इस HTML का प्रयोग करें। यह क्लीनर है और जावास्क्रिप्ट पर भरोसा नहीं करता है।

<form method="get" action="/sponsor"> 
    <button type="submit" id="sponsorContinue">Continue</button> 
</form> 

इसके अलावा, इस अब काम करेंगे:

$this->click('sponsorContinue'); 

हालांकि, अगर आप, काम करने के लिए window.location पाने के लिए कोशिश कर रहे हैं see this question

+0

+1। लेकिन फिर भी सेलेनियम ऑनक्लिक घटना को ट्रिगर क्यों नहीं कर रहा है? –

+1

मैं इस मामले में बटन एचटीएमएल बदलने के साथ सहमत हूं। हालांकि अगर आपको भविष्य में घटनाओं को आग लगाना है तो सेलेनियम आपको फायरएवेंट के साथ ऐसा करने देता है! – Zugwalt

+0

@Zugwalt मैं सफारी 4 – Andrew

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