【发布时间】:2014-07-08 00:26:22
【问题描述】:
我已经阅读了所有“你为什么要这样做”的答案,以及“不要那样做,这样做”的答案。我同意在自动化测试中暂停是没有意义的,除非你真的在等待一个条件的到来。
也就是说,有时我想在开发过程中“单步执行”不带断点的操作列表,以查看测试顺利运行而不会中断。此外,单步执行断点有时会完全中断测试。所以这里是这样的场景:我有隐藏的菜单,当鼠标悬停在它们上面时会显示出来,然后当你将鼠标悬停在现在可见的选项上时,它们会通过在鼠标从一个移动到另一个时改变它们的背景颜色来突出显示;常见的菜单场景。我想自动化那个东西,并且能够在我开发它的同时看到它工作,然后当我喜欢我看到的东西时把它扔掉。对不起,我不是在喊,只是在强调。
所以我得到了菜单的顶部元素,然后是可供选择的选项列表。然后按顺序将鼠标悬停在前 3 个选项上。
var element = page.WebDriver.FindElement(By.Id("actions"));
var elementLi = element.FindElements(By.TagName("li"));
Actions action = new Actions(page.WebDriver);
action.MoveToElement(element).Perform();
action.MoveToElement(elementLi[1]).Build().Perform();
action.MoveToElement(elementLi[2]).Build().Perform();
action.MoveToElement(elementLi[3]).Build().Perform();
是的,我可以设置断点,但如果我在每个 MoveToElement 调用之间放置隐式等待或 Thread.Sleep(5000),则不会暂停。即,它通过 lickity-split 运行,没有对我眨眼以示睦邻友好。
这不是一个关键问题,我同意。但是为什么没有什么可以暂停呢?
【问题讨论】:
-
当我想检查鼠标出现时元素的颜色变化时,我实际上做了一些非常相似的事情。我很惊讶地发现睡觉没有帮助。我很感激您在报废并“正确”执行之前暂时在寻找“不理想但合适的答案”。因此,您是否尝试过实例化一个新的
Actions(),执行 moveTo、sleep、新操作、moveTo、sleep 等? -
喜欢使用“lickity-split”
-
我在这个线程中搜索 Actions 类的 pause() 方法,并认为在这种情况下我们可以使用 pause() 方法。
标签: asp.net-mvc-4 selenium ui-automation