如何使用phpUnit/selenium模拟点击特定位置



我使用phpunit 3.7和selenium进行测试。为了测试文本高亮显示功能,我想点击div(包含文本)中的特定x,y位置。

我尝试了moveTo()函数(请参阅),但我总是收到一个错误,尽管该元素是PHPUnit_Extensions_Selenium2TestCase_element类的实例:"PHPUnit_EExtensions _Selenium2 TestCase_Exception:只支持在一个元素上移动。请传递一个PHPUnit_Eextensions_Selenim2TestCase-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,希望其他人现在可以模拟如何点击元素中的特定位置?谢谢

当您在SessionCommand\MoveTo.php中检查源代码时,似乎不应该执行

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

但是:

$this->moveto($div);

然而,我得到了BadMethodCallException:无论我尝试了哪种调用方式,命令"moveTo"都不存在或不受支持。

我想移动光标的原因:这样我就可以右键单击一个元素。。。

编辑:

仔细查看代码,我突然意识到我叫moveTo,而不是moveTo。。。。至少我摆脱了我的例外。BTW:我的建议仍然适用于你的问题。

click()有什么问题?有两种不同的click()方法,一种在会话上($this->click),另一种在元素上($div->click)。

第2版:

click()似乎未初始化为会话中的可用命令。Buttondown和buttonup已定义。使用先扣后扣应该会让你点击。

不过我还是运气不好。buttondown和buttonup似乎不会将关联数组作为JSON参数传递给Selenium服务器,所以我无法模拟鼠标中键或右键。

目前,我在Session.php中添加了点击作为genericpost选项,因为这样我就可以调用:

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

右键单击我刚刚移动光标的元素。

最新更新