我正在使用phpunit 3.7和selenium进行测试。为了测试文本突出显示功能,我想点击div中的特定x,y位置(包含文本)。
我尝试了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');
}
此外,“click”命令似乎不存在或不受支持。 我刚开始使用phpunit / selenium并希望其他人现在可以如何模拟元素中特定位置的点击?谢谢!
答案 0 :(得分:0)
当您在SessionCommand \ MoveTo.php中检查源代码时,您似乎不应该这样做
$this->moveto(array(
'element' => $div,
'xoffset' => 100,
'yofsset' => 5
));
但相反:
$this->moveto($div);
然而,我得到了BadMethodCallException:无论我试过哪种方式调用它,命令'moveTo'都不存在或不受支持。
原因我想移动光标:所以我可以右键单击一个元素......
修改强>
仔细查看我看到的代码,我正在调用moveTo,而不是移动....至少我摆脱了我的异常。顺便说一句:我的建议应该仍然适用于您的问题。
您对click()有什么问题?有两种不同的click()方法,一种在会话上($ this-> click()),另一种在元素上($ div-> click)。
<强> EDIT2:强>
click()似乎没有被初始化为会话上的可用命令。定义了按钮和按钮。使用第一个按钮然后按钮应该会给你点击。
虽然我还是运气不好。 buttondown和buttonup似乎没有将关联数组作为JSON参数传递给Selenium服务器,因此我无法模拟鼠标中键或鼠标右键。
现在我在Session.php中添加了click as genericpost选项,因为我可以调用:
$this->click('button'=>2);
右键单击我刚将光标移过的元素。