2014-09-22 58 views
1

這裏是按鈕的HTML:有麻煩PHPUnit的-selenium2點擊一個按鈕

/body[@class='wide']/div[@class='container']/div[@id='main']/div[@class='container']/div[@class='content']/div[@class='users form']/form[@id='UserAddForm']/div[@class='button-control-row']/button[@class='btn btn-hover-success'] 

我曾嘗試:

<button class="btn btn-hover-success"><i class="icon-plus"></i> Add</button> 

這裏根據Chrome擴展是XPath路徑目標按鈕使用byXPathbyCssSelector(和byLinkText,但它實際上不是一個鏈接)沒有成功。這是我來最接近:

// Attempt to add a bogus user 
    $netidInput = $this->byId('UserNetid'); 
    $netidInput->value('bogus01'); 
    $submitLink = $this->byCssSelector('button'); 
    $this->assertEquals('Add', $submitLink->text()); 
    $this->click(); 
    $this->assertContains('Users', $this->title()); 

assertEquals匹配成功的「添加」,這是按鈕上的文字,但不能點擊它。我收到以下錯誤:

 
[[email protected]#### View]# phpunit UsersViewTest.php 
PHPUnit 3.7.18 by Sebastian Bergmann. 

E 

Time: 5 seconds, Memory: 5.75Mb 

There was 1 error: 

1) UsersViewTest::testMyTest 
PHPUnit_Extensions_Selenium2TestCase_WebDriverException: '[JavaScript Error: "can't access dead object" {file: "file:///tmp/anonymous8204548738502860021webdriver-profile/extensions/[email protected]/components/synthetic-mouse.js" line: 7462}]' when calling method: [wdIMouse::click] 
Build info: version: '2.43.0', revision: '597b76b', time: '2014-09-09 20:52:14' 
System info: host: '####', ip: '127.0.0.1', os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.32-358.el6.x86_64', java.version: '1.6.0_24' 
Driver info: driver.version: unknown 

/var/www/html/formsdev/app/Plugin/BaseApp/Test/Case/View/UsersViewTest.php:25 
/var/www/html/formsdev/app/Plugin/BaseApp/Test/Case/View/UsersViewTest.php:25 

FAILURES! 
Tests: 1, Assertions: 2, Errors: 1. 

這是針對RHEL 6.4上的Xvfb無頭瀏覽器運行的。如果我遺漏了任何相關信息,請讓我知道。感謝您提供的任何建議!

編輯:添加另一個嘗試與不同的錯誤,可能會觸發某人的東西。

$submitLink = $this->byXPath("//button[contains(text(),'Add')]"); 
    $this->assertEquals('Add', $submitLink->text()); 
    $this->click("//button[contains(text(),'Add')]"); 

這將導致錯誤:

There was 1 error: 1) UsersViewTest::testMyTest PHPUnit_Extensions_Selenium2TestCase_WebDriverException: java.lang.String cannot be cast to java.lang.Long

回答

1

事實證明,我被錯誤地呼喚點擊。而不是$ this-> click(),我需要使用$ submitLink-> click(),它可以很好地適用於XPath或CssSelector。

// Attempt to add a bogus user $netidInput = $this->byId('UserNetid'); $netidInput->value('bogus01'); $submitLink = $this->byCssSelector('button'); //$submitLink = $this->byXPath("//button[contains(text(),'Add')]"); $this->assertEquals('Add', $submitLink->text()); $submitLink->click(); $this->assertContains('Users', $this->title());

乾杯!