2013-07-13 6 views
6

मैं निम्नलिखित त्रुटि प्राप्त हो रही:symfony2 क्रॉलर से फ़ॉर्म का चयन करने का प्रयास करने में त्रुटि?

There was 1 error: 

1) Caremonk\MainSiteBundle\Tests\Controller\SecurityControllerFunctionalTest::testIndex 
InvalidArgumentException: The current node list is empty. 

लेकिन जब मैं स्थानीय होस्ट/लॉगिन करने के लिए नेविगेट, मेरे प्रपत्र सही सामग्री के साथ भरता है। लाइन जो कहती है ...

$form = $crawler->selectButton('login')->form(); 

त्रुटि उत्पन्न कर रहा है। मेरे परीक्षण में क्या गलत है?

कार्यात्मक परीक्षण:

<?php 

namespace Caremonk\MainSiteBundle\Tests\Controller; 

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 

class SecurityControllerFunctionalTest extends WebTestCase 
{ 
    public function testIndex() 
    { 
     $client = static::createClient(); 

     $crawler = $client->request('GET', '/login'); 

     $form = $crawler->selectButton('login')->form(); 
     $form['username'] = 'testActive'; 
     $form['password'] = 'passwordActive'; 
    } 
} 

टहनी दृश्य:

{# src/Acme/SecurityBundle/Resources/views/Security/login.html.twig #} 
{% if error %} 
    <div>{{ error.message }}</div> 
{% endif %} 

<form action="{{ path('caremonk_mainsite_login_check') }}" method="post"> 
    <label for="username">Username:</label> 
    <input type="text" id="username" name="_username" value="{{ last_username }}" /> 

    <label for="password">Password:</label> 
    <input type="password" id="password" name="_password" /> 

    {# 
     If you want to control the URL the user is redirected to on success (more details below) 
     <input type="hidden" name="_target_path" value="/account" /> 
    #} 

    <button type="submit">login</button> 
</form> 

उत्तर

7

प्रारंभ symfony2 में कार्यात्मक परीक्षण कर रही है और अपने प्रश्न अनुत्तरित पाया है, तो यहाँ हम चले,

selectButton विधि एक स्ट्रिंग तर्क के रूप में वास्तविक बटन पाठ लेता है। तो यदि आपका बटन 'मेरा फॉर्म सबमिट करें' है, तो यह आपका टेक्स्ट होगा।

$form = $crawler->selectButton('submit my form please')->form(); 

चेकआउट एंड्रयू Stackoverflow द्वारा जवाब

+1

मापदंडों भी अंडरस्कोर prepended, उदा की आवश्यकता होती है प्रस्तुत '' _username''' – Tjorriemorrie

0

selectButton() से छवियों के लिए name या alt मूल्य के लिए एक बटन का चयन करता है।

0

ठीक है, यहाँ कारण है कि मैं इस त्रुटि थी और मैं इसे कैसे हल किया।

(Goutte का उपयोग करना) क्रॉलर जीईटी के साथ ब्राउज़र की तरह काम कर रहा है।

तो, जब कर रही:

$client = new Client(); 
$crawler = $client->request('GET', '/login'); 

क्रॉलर तक पहुँचने के लिए कोशिश कर रहा है http://localhost/login

तो, मूल रूप से, मैं यह करने के लिए बदल:

$client = new Client(); 
$crawler = $client->request('GET', 'http://site.dev/app_dev.php/login'); 

site.dev जा रहा है मेरी मेरे सिम्फनी परियोजना के लिए वर्चुअल होस्ट।

उम्मीद है कि यह मदद करता है!

16

विनीत का उत्तर सही है लेकिन ... मेरी राय में बटन से फ़ॉर्म लेने का अच्छा विचार नहीं है। बेहतर कोशिश:

$crawler->filter('form[name=yourAwesomeFormName]')->form(); 

या वर्ग के लिए नाम बदलने के लिए, आईडी आदि एक दृश्य पर हो सकता है और अधिक तो समरस साथ 1 प्रपत्र मूल्य

+3

अद्भुत धन्यवाद, यह सोच रहा था कि बटन से अलग फॉर्म प्राप्त करने का कोई तरीका था या नहीं! – timhc22

+0

पाठ के बाद से सबसे अच्छा विकल्प निश्चित रूप से बदल सकता है और देव पक्ष पर प्रतिबिंबित नहीं होता है (अनुवाद पर निर्भर, क्लाइंट अनुरोध द्वारा शब्द बदलना ...) – MediaVince

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

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