Webdriver在每行代码后等待

时间:2014-06-25 11:11:01

标签: selenium selenium-webdriver webdriver

我在面试中被问过一个问题,

问题:我们有1000行代码,每行webdriver应该等待5秒后,你会怎么做?

我告诉你:你可以使用隐式等待创建一个函数,并将代码放入for循环中,每次迭代都要求运行那个等待函数。

他们告诉这不是正确的做法。

你能否告诉我处理这个问题的最佳方法......

2 个答案:

答案 0 :(得分:0)

坦率地说,我会问他们强迫测试执行至少需要83.3333分钟的目的是什么。

如果这是视觉能力,那么他们是谁会坐在那里一个半小时,只是观看试运行...如果是应用程序那么有更好的方法来确保某些东西加载然后在所有东西上放5秒钟。

就注册每个Selenium命令触发的事件而言,olyv在上述评论中提供的链接是一个很好的起点。

就个人而言,我更喜欢为Selenium命令创建一个包装器,这样它不仅仅是一个事件,但我可以在包装器中执行任意数量的公共代码,然后在执行命令时我只需按下它整个包装器。有多种方法可以做到这一点,但它是附加或封装Selenium API的自定义代码。然后实际的秒数在配置文件中,以便于调整。我发现这种方法在很多情况下非常有用。

答案 1 :(得分:0)

如果我们假设每一行调用WebDriver函数,使用AspectJ,您可以检测函数何时被调用,并在完成时执行代码。例如:

@Aspect
public class WebdriverAfterAspect {

   int waitTime = 5;

   @After("regular expression that represents the name a Webdriver function")
   public void logStringArguments(String name){
      wait(waitTime);
   }    
}

您有很多例子here