Php 发送键以测试选项卡索引并关闭Behat中的选项卡(MacOSX、Behat、Chromedriver、Selenium2)
1) 是否有方法将Tab键发送到浏览器以测试页面的Tab索引 2) 有没有一种方法可以将W键发送到浏览器,同时模拟按住cmd键关闭chrome中的选项卡 我们已经尝试过使用keyPress()函数,并在jQuery中使用了以下函数:Php 发送键以测试选项卡索引并关闭Behat中的选项卡(MacOSX、Behat、Chromedriver、Selenium2),php,jquery,cucumber,selenium-chromedriver,behat,Php,Jquery,Cucumber,Selenium Chromedriver,Behat,1) 是否有方法将Tab键发送到浏览器以测试页面的Tab索引 2) 有没有一种方法可以将W键发送到浏览器,同时模拟按住cmd键关闭chrome中的选项卡 我们已经尝试过使用keyPress()函数,并在jQuery中使用了以下函数: /** * @Given /^(?:|I )manually press "([^"]*)"$/ */ public function manuallyPress($key) { $script = "jQuery.event.trigger({ typ
/**
* @Given /^(?:|I )manually press "([^"]*)"$/
*/
public function manuallyPress($key)
{
$script = "jQuery.event.trigger({ type : 'keypress', which : '" . $key . "' });";
$this->getSession()->evaluateScript($script);
}
他们两人的行为都不会像预期的那样(他们似乎根本没有工作)
有人找到了这个问题的解决方案吗?我在这个问题上花了不少时间,下面是我的结果:
pressKey
方法(@如果我在:field字段中按:char键,则该方法有效),但它仅在字段作为键事件的目标时起作用您必须编写自己的按键
才能将按键发送到自定义CSS元素
Syn
库对合成浏览器事件进行符号化。该库由Selenium注入页面
Syn.trigger('keydown',…)
向元素发送字符,但它似乎没有按预期工作。相反,使用Syn.key(DOMElement,'tab')
实际上会将tab
键发送到DOMElement
元素您还必须实现这一点,才能使您的按键按预期工作。
DriverFactory
类创建驱动程序,包括selenium驱动程序。由于某些原因,Selenium2Driver
类是硬编码的,因此无法注入您自己的此类扩展实现您必须使用反射来利用现有的Selenium2Driver
类的受保护方法来包括Syn
库并执行上一步的JS代码。
跳到内容辅助功能链接的内容时,就是这种情况。这样的链接应该出现在第一个选项卡
字符按键上,但是Syn
选项卡只能从另一个可以接收焦点的元素
一个有效的解决方案是在打开
标签后,作为第一个元素注入这样的元素。该元素在视觉上是隐藏的,但与屏幕阅读器兼容。然后我们触发这个元素上的键,以确保从tab index中获得第一个焦点的元素实际获得了它。请注意,注入元件并在其上按下触发键不会使其自身聚焦