Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 硒对事件的反应_.net_Testing_Dom_Selenium - Fatal编程技术网

.net 硒对事件的反应

.net 硒对事件的反应,.net,testing,dom,selenium,.net,Testing,Dom,Selenium,我目前正在使用最新版本的Selenium及其.net绑定来执行一些测试。 不幸的是,我必须模拟一些在可变时间发生的反应,这些反应只能在非常有限的时间间隔内执行,并且连续轮询DOM的速度不够快。 Selenium有没有办法钩住DOM事件,这样我就可以截获我对代码感兴趣的事件? 如果是这样,我们将非常感谢.net代码示例 提前谢谢 附言:我对浏览器基本上是漠不关心的,但是一个在Chrome上工作的解决方案是首选的你唯一的希望就是用JavaScript来实现它。您可以使用ISelenium.GetEv

我目前正在使用最新版本的Selenium及其.net绑定来执行一些测试。 不幸的是,我必须模拟一些在可变时间发生的反应,这些反应只能在非常有限的时间间隔内执行,并且连续轮询DOM的速度不够快。 Selenium有没有办法钩住DOM事件,这样我就可以截获我对代码感兴趣的事件? 如果是这样,我们将非常感谢.net代码示例

提前谢谢


附言:我对浏览器基本上是漠不关心的,但是一个在Chrome上工作的解决方案是首选的

你唯一的希望就是用JavaScript来实现它。您可以使用
ISelenium.GetEval()
ISelenium.RunScript()
运行任意JavaScript代码
GetEval()
将同步执行代码并返回块中最后一个表达式的值
RunScript()
实际上会使用您的代码在DOM中构造一个新的
元素,这将导致浏览器异步运行它,直到JavaScript引擎空闲(即,至少在
RunScript()
命令完成之后)


您可能希望使用
RunScript()
钩住所需的事件,然后让测试脚本等待事件有足够的时间触发,然后可以使用
GetEval()
检索或验证事件处理程序的结果。

根据您的浏览器,这可能是定位器类型和浏览器类型的问题,这就是您无法轮询DOM的原因。我认为他可以轮询DOM,他只是在寻找一个不需要polling@prestomanifestoOP说轮询DOM的速度不够快,因此我对浏览器类型发表了声明。Case and point我用Selenium 2 Webdriver C#运行了一个基准测试,发现在firefox中按ID查找元素需要198ms,在IE中需要308ms(这是每个浏览器平均5次尝试。但是CssSelector或Xpath对于Firefox为7ms,对于IE为38ms,同样是每个浏览器平均5次尝试。因此,如果他在IE中按ID轮询DOM,可能会比所需的响应时间慢。我使用的是按ID绑定,感谢您建议Xpath可能更快。我想chrome会超过。)orm包括FF和IE,如果不是这样的话,我还是坚持使用它,因为页面加载和交互的其余部分会更快……这里有一个链接,指向@Ross Patterson提到的一个例子