2012-11-14 67 views
1

我使用phpunit 3.7和硒進行測試。爲了測試文本突出顯示功能,我想單擊div中的特定x,y位置(包含文本)。如何使用phpUnit/selen模擬點擊特定位置?

我試圖對moveTo()函數(see),但我總是得到一個錯誤,雖然元素是PHPUnit_Extensions_Selenium2TestCase_Element類的一個實例:「PHPUnit_Extensions_Selenium2TestCase_Exception:僅移動了一個多元素的支持,請傳遞一個PHPUnit_Extensions_Selenium2TestCase_Element實例。」 。

$div = $this->byCssSelector('#texthighlight-instant_feedback div div'); 

if ($div instanceof PHPUnit_Extensions_Selenium2TestCase_Element) { 
    $this->moveto(array(
     'element' => $div, 
     'xoffset' => 100, 
     'yofsset' => 5 
    )); 
    $this->click(); 
} else { 
    throw new PHPUnit_Extensions_Selenium2TestCase_Exception('no instanceof PHPUnit_Extensions_Selenium2TestCase_Element'); 
} 

此外'點擊'命令似乎不存在或不支持。 我剛開始使用phpunit/selenium,並希望其他人現在可以如何模擬一個元素內的特定位置點擊?謝謝!

回答

0

當您在SessionCommand \ MoveTo.php檢查源代碼,似乎你不應該做

$this->moveto(array(
    'element' => $div, 
    'xoffset' => 100, 
    'yofsset' => 5 
)); 

但是相反:

$this->moveto($div); 

但是,我越來越和BadMethodCallException:本命令'moveTo'不存在或不受支持,無論我嘗試使用哪種方式調用它。

原因我想移動光標:這樣我就可以右鍵單擊某個元素...

編輯:

通過我恍然大悟的代碼我打電話的moveTo來看,不moveto ....至少我擺脫了我的例外。順便說一句:我的建議仍然適用於你的問題。

你點擊()有什麼問題?有兩個不同的click() - 方法,一個在會話上($ this-> click())和一個在元素上($ div-> click)。

EDIT2:

點擊()似乎不被初始化爲會話可用的命令。定義了Buttondown和buttonup。使用第一個buttondown然後buttonup應該給你點擊。

雖然我仍然運氣不佳。 buttondown和buttonup似乎不會傳遞關聯數組作爲JSON參數到Selenium服務器,所以我不能模擬中間或鼠標右鍵。

現在我點擊添加在session.php文件genericpost選項,因爲這樣我可以打電話:

$this->click('button'=>2); 

至右擊我剛搬到光標移到元素。