我想降低脚本的执行速度,以便可以在浏览器上正确查看执行情况。我想在webdriver中执行此操作。

评论

您为什么要这样做?

我不确定是否需要它,但是如果您确实需要它,则可以使用EventFiringWebDriver stackoverflow.com/a/23787258/2504101

#1 楼

您可以尝试设置隐式等待时间。 (文档)

// 5 seconds implicit wait (C# code)
IWebDriver driver = new FirefoxDriver();
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));


评论


这如何帮助降低执行速度?一旦找到元素,这仍然会采取措施。

– FDM
17年8月16日在7:36

按照声明,这不会减慢执行速度:“指定当元素不立即出现时,驱动程序在搜索元素时应等待的时间”

–克里斯
17年8月17日14:58



#2 楼

这是我调试Selenium会话以了解正在发生的情况的方法:

分步调试:大多数IDE允许您进行分步调试,您可以设置一个断点在您要调查的点之前。这将暂停测试的执行,并让您使用自己的工具检查浏览器。您可以一步一步地遍历代码的每一行并监视行为。例如,请观看此视频

视频记录:使用屏幕录像机记录测试会话,或使用Saele Labs或TestingBot等在线Selenium网格之一,它们都默认记录测试会话,留出足够的时间来分析大多数问题。录制后,您可以逐帧回放。

睡眠:像其他人建议的那样,您可以添加睡眠或增加默认的等待时间。我个人不喜欢这样做,因为如果睡眠时间不够长,您可能需要重新运行测试几次。

#3 楼

在过去几天中,我一直在研究很多内容。到目前为止,解决此问题的最简单方法是创建驱动程序属性,而不是变量,并在get中添加等待。

要求,即您在浏览器中执行任何操作时,都会以指定的数量降低速度。

#4 楼

您可以在每条指令之后或您感兴趣的指令周围入睡。

评论


我可以使用不是我想要的睡眠。我想减慢执行速度。我不想暂停它。在Selenium IDE中,我们可以选择对其进行控制。硒网络驱动程序中是否有此属性?

–阿什瓦尼·拉吉(Ashwani Raj)
2014年4月29日在12:29

为什么要减慢执行速度???

– Phil Kirkham
2014年4月29日在13:32

只是为了在浏览器上查看我写的脚本在浏览器上的表现都不错。

–阿什瓦尼·拉吉(Ashwani Raj)
2014年5月1日晚上11:45

#5 楼

一些工具允许在方案之前,方案之后,步骤之前,步骤之后定义钩子,这称为方案的建立或拆卸,甚至是方案中的单独步骤。如果您确实有此类钩子,则可以在“后步”钩子中添加延迟,这样就可以了。

#6 楼

在selenium webDriver中执行此操作最简单的方法是扩展您首选的WebDriver(例如FirefoxDriver)并覆盖execute方法。 > Voila会降低速度:

@Override
protected Response execute(String driverCommand, Map<String, ?> parameters) {
    try {
        // wait 500 millis and after that run command
        Thread.sleep(500);
    } catch (InterruptedException ex) {}
    return super.execute(driverCommand, parameters);
}


评论


使用接受的答案带来的附加值是多少? ImplicitlyWait设置是否相同,不是吗?

– Niels van Reijmersdal
15年6月8日在10:08

@NielsvanReijmersdal否,至少根据其说明文件(Selenium 3.0.1):指定驱动程序在搜索不存在的元素时应等待的时间。

– SantiBailors
17年1月1日13:17



#7 楼

有几种不同的方法可以做到这一点。我个人有一个控制我的自动化脚本的UI,该脚本允许我逐步进行(以记录模式或回放),完全自动化或我喜欢的方式。只需构建一个UI来控制流程,然后根据需要具有可以由该UI控制的不同功能。

例如,分步UI会执行一个名为nextStep()
nextStep将找到下一个所需的步骤并执行该操作。

全自动的人会在自动化时检查布尔值是否为真,只要它是真的,它就会继续运行。设置一个暂停/停止按钮来更改该布尔值并完成操作。

为了创建这样的功能,以一种简单的方式:

创建一个列出列表的UI确定您的测试步骤,如何执行取决于您。我将其设为可编辑,并拖放到表中(JTree用于套件,JList用于案例,JTable用于步骤)。播放按钮的actionEventListener,它捕获选定的步骤并运行它们。在每个步骤之间,检查是否仍选择了播放按钮。

对于诸如groovy脚本之类的东西,只需添加一个groovy控制台并创建一个触发器(IE。关键字为Groovy = script),然后让控制台解析只要看到它。

我还添加了诸如屏幕截图,暂停,等待等关键字。这使系统能够自动停止,直到发生用户干预为止。

评论


您会说什么工具?它可以与webdriver交互吗?

–boatcoder
2014年5月5日21:37

它是一个自定义构建的系统,其中A)动态记录流B)允许最终用户编辑流并将Groovy脚本添加到测试用例C)控制流的运行,是的,它是基于WebDriver构建的

– Paul Muir
2014年5月6日15:51



我猜那当时不可用....

–boatcoder
2014年5月6日15:54

可悲的是没有。我将编辑并放置用于创建UI的步骤。真的很简单。

– Paul Muir
2014年5月6日16:09

#8 楼

Firefox selenium Web扩展程序可以使用滑动条选择使测试运行得更快或更慢。不知道IE或Chrome是否具有此功能(如果没有),我只会使用调试器。

#9 楼

通过查看您的问题,我为您提供了一种可能的解决方案。

如果您的测试平台支持,请尝试为每个测试方法添加优先级,因为多个@Test方法可以并行运行。

评论


如何增加或改善已接受的答案?

–凯特·保罗克♦
2015年10月5日,11:21

#10 楼

我没有足够的声誉来发表评论,但是我认为上面的Eduard Sukharev是最好的答案-即在您的后续步骤代码中添加一个等待时间,因为这只涉及一行更改,您可以轻松添加/删除。这是我在几个框架中所做的事情:

在Behat中,我在之后的步骤中添加了一个睡眠: >在机器人框架中,有一个名为“设置硒速度”的函数,它将在步骤之间等待指定的秒数。

#11 楼

我也尝试过,但不知道如何减慢硒的执行,然后尝试了变通方法以减慢其执行速度。使用“网络限制器”工具来控制网络带宽(提供试用版),您可以将带宽限制设置为chrome驱动程序,以便它与硒服务器和chrome浏览器缓慢通信。这样,您可以模拟测试套件的缓慢执行。

#12 楼

我认为这会使3秒钟的睡眠间隔减慢每一步。试试吧
WebDriverWait driverWait = new WebDriverWait( new SystemClock(), Driver, TimeSpan.FromSeconds( 20 ), TimeSpan.FromSeconds( 3 ) );

TimeSpan.FromSeconds( 3 )是这里的睡眠间隔。
注意:我正在使用ChromeDriver。