1

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

我尝试了 moveTo() 函数(请参阅),但我总是收到错误,尽管该元素是 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 并希望其他人现在可以如何模拟对元素中特定位置的点击?谢谢!

4

1 回答 1

0

当您检查 SessionCommand\MoveTo.php 中的源代码时,您似乎不应该这样做

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

但反而:

$this->moveto($div);

但是,我得到了 BadMethodCallException:命令 'moveTo' 不存在或不支持,无论我尝试了哪种调用方式。

我想移动光标的原因:所以我可以右键单击一个元素...

编辑:

浏览代码时,我突然意识到我正在调用 moveTo,而不是 moveto.... 至少我摆脱了我的异常。顺便说一句:我的建议仍然适用于您的问题。

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

编辑2:

click() 似乎没有被初始化为会话中的可用命令。定义了 Buttondown 和 buttonup。使用第一个 buttondown 然后 buttonup 应该给你你的点击。

不过我还是不走运。buttondown 和 buttonup 似乎没有将关联数组作为 JSON 参数传递给 Selenium 服务器,因此我无法模拟鼠标中键或右键。

现在我在 Session.php 中添加 click 作为 genericpost 选项,因为这样我可以调用:

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

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

于 2012-11-29T14:20:30.890 回答