這裏是按鈕的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路徑目標按鈕使用byXPath
和byCssSelector
(和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