2013-10-14 23 views
5

temel PHPUnit Selenyum iddiaların birini testler hataları dışarı ve görüntüler bu mesajı kullanma girişiminde Her zaman bir komut arayamaz: http://phpunit.de/manual/3.7/en/selenium.html günübirden yöntem argümanlar

Exception: You cannot call a command with multiple method arguments. 

, olması kullanımını gösterir :

void assertElementValueEquals(string $locator, string $text) 

Ben

$this->assertElementValueEquals('id=date_1_formatted', '2013-01-01'); 

t ile çağırdığınızda Be est böyle Using PHPUnit with Selenium, how can I test that an element contains exactly something?

+0

Ya önermek isterim '# date_1_formatted' veya '" [id = 'date_1_formatted'] "' – Richard

+0

Öneriniz için teşekkürler, ancak bunların her biri hala aynı hatayı üretir. –

+0

Açık bir şekilde, $ locator'un olması gereken, ancak yalnızca xpath değerini kabul etmesi gereken bir belgeyi bulamıyorum. Bu durumda, denemek isterdim "// [@ id = 'date_1_formatted']" ' – Richard

cevap

3

assertElementValueEqualsSelenium2TestCase uygulanmadı söz konusu olduğu gibi, bu aynı biçim görünüyor olsa bile her zaman başkaları için çalışmaktan yukarıdaki hata üretir. Bağlantınızda, SeleniumTestCase (Selenium RC sürümü) için bahsedilmiştir.

$element = $this->byId('date_1_formatted'); 
$this->assertEquals('2013-01-01', $element->value()); 

PS: Eğer bilginiz varsa

Üstelik> byXPath burada da https://github.com/sebastianbergmann/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php

gibi $ this-> byId() kullanabilirsiniz $ this- ile doğru yapıyı kullanılan Selenium IDE ile, bu command line tool deneyebilirsiniz.

+0

Açılış ve kapanış etiketleri arasında yer alan değeri almak istiyorsanız, örneğin "Merhaba" in "Hello" işlevini kullanın, $ karakterini kullanın. –

0

Buna da bir baktım, benim durumumda kendi özel yöntemimdi, bu yüzden bir satır kapalı olduğunu düşündüm.
Görünüşe göre, test sınıfı ile phpunit arasında düşündüğümden farklı bir "arabellek" sınıfı kullanıyordum. Ama __call() bir Lot kullandığı için, "undefined method" yerine bu hatayı verdi.