2012-11-13 22 views
5

मैं Behat का उपयोग कर ZombieJS ड्राइवर के साथ परीक्षण के लिए उपयोग कर रहा हूं, और सबकुछ अब तक बहुत अच्छी तरह से काम कर रहा है, लेकिन एक चीज है जो मुझे परेशान करती है, मुझे लगता है कि बेथ को एक क्लिक को अनुकरण करने के तरीके को कैसे प्राप्त किया जा सकता है गैर लिंक तत्व। मुझे लगता है कि यह मिंक से "क्रॉस-ब्राउज़र" ड्राइवर होने के कारण आता है, और यह वास्तव में गैर-लिंक तत्वों पर क्लिक करने के लिए समझ में नहीं आता है। हालांकि मेरे उपयोग के मामले में, मुझे इसकी आवश्यकता है, क्योंकि पृष्ठ पर कई तत्व हैं जिनके पास जावास्क्रिप्ट ईवेंट श्रोताओं से जुड़ा हुआ है, और मैं इन कार्यक्षमताओं का परीक्षण करना चाहता हूं।क्या मैं जेह श्रोताओं को आग लगाने के लिए बेथ/ज़ोंबीजेएस/मिंक को "गैर-लिंक" तत्व पर क्लिक करके अनुकरण कर सकता हूं?

मैं

Then I follow "div.sa" 

उपयोग करने की कोशिश लेकिन यह उम्मीद त्रुटि के साथ विफल:

01. Link with id|title|alt|text "div.sa" not found. 

यह एक कड़ी तत्व नहीं है के बाद से। वहाँ Behat में एक ऐसी ही कदम है:

मैं प्रेस "button.class"

लेकिन यह एक ही बटन के लिए है।

क्या कोई तरीका है कि मैं उन तत्वों पर क्लिक कर सकता हूं जो टैग नहीं हैं?

उत्तर

4

हाँ मैं इतना विश्वास है, लेकिन आप (आप MinkContext का एक उपवर्ग उपयोग कर रहे हैं एक कस्टम कदम है, इन पंक्तियों के साथ कुछ लिखने के लिए की आवश्यकता होगी

/** 
* @When /^I click the something$/ 
*/ 
public function iClickTheSomething() 
{ 
    $something = $this->getSession() 
         ->getPage() 
         ->find("css", "div.sa") 
         ->click(); 
} 
12
कुछ त्रुटि हैंडलिंग के साथ

:।

/** Click on the element with the provided xpath query 
* 
* @When /^(?:|I)click on the element "([^"]*)"$/ 
*/ 
public function iClickOnTheElement($locator) 
{ 
    $session = $this->getSession(); // get the mink session 
    $element = $session->getPage()->find('css', $locator); // runs the actual query and returns the element 

    // errors must not pass silently 
    if (null === $element) { 
     throw new \InvalidArgumentException(sprintf('Could not evaluate CSS selector: "%s"', $locator)); 
    } 

    // ok, let's click on it 
    $element->click(); 
} 
1

जब मैं एक क्लिक करें घटना को अंजाम, ताकि वर्तमान URL जावास्क्रिप्ट के बराबर हो:

$this->iClickOnTheElementWithXPath(‘//div[@class="'.$arg2.'"]/div/div[@class="edit"]/a[text()="'.$arg1.'"]‘); 

पेज एचटीएमएल में:

<a onclick="editForm('Avatar')" href="javascript:;">Modifier</a> 
2

यह Comstar द्वारा जवाब के अपने रूपांतरण है। वही कार्यक्षमता हासिल की जाती है, हालांकि, ऐसा करने के लिए मुझे यह आसान लगता है।

/** 
* @Then /^I click on "([^"]*)"$/ 
*/ 
public function iClickOn($arg1) 
{ 
    $page = $this->getSession()->getPage(); 

    $findName = $page->find("css", $arg1); 
    if (!$findName){ 
     throw new Exception($arg1." could not be found"); 
    } 
    else { 
     $findName->click(); 
    } 

} 

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

  • कोई संबंधित समस्या नहीं^_^