一般来说,UI自动化测试开发过程中,尝试不同的方法去找界面上的控件是一个比较费时的事情,这是因为有些界面需要前期操作很多步骤才能到达目的界面查看控件树结构,如果一不小心把控件树结构理解错了,导致控件查找失败,就又得从头再来,这里介绍几个技巧,希望对网友有些帮助。
使用Visual Studio的立即窗口尝试新的函数
Visual Studio里面的立即窗口,允许我们直接调用任意的public的.NET函数,不论是静态函数还是实例函数,都可以被调用到。比如我们新建了一个.NET类库工程,在里面添加了如下代码,里面有一个函数Send,它需要一个参数url。在调试这个函数时,我并没有像通常那样通过写一个main函数来调用这个函数来达到测试它的目的,而是在立即窗口里直接构造了一个Mailbox对象,再通过传递一个特定的url调用Send函数来达到测试目的。从下面的截图里还可以看到,我们甚至可以在里面设置断点,中断函数的调用并查看其局部变量的值。
在立即窗口里,可以跟写普通C#程序一样,可以定义一个新的变量,这个新变量就跟是在函数的局部变量一样,可以将它作为参数传递给其他函数,也可以与其他变量之间相互操作。例如,上图里即时窗口的代码,也可以写成下面这样:
Runner.Mailbox.Mailbox mb = new Runner.Mailbox.Mailbox();
mb.Send(“http://www.vowei.com”);
使用Visual Studio的即时编辑调试功能即时修改代码
在调试UI自动化测试程序时,最麻烦的就莫过于测试代码的Bug出现在测试流程的中间,需要操作完好几个界面后才能复现,万一一个不小心误操作了,又要重头运行测试用例,费时费力。Visual Studio提供的运行时代码编辑功能,可以让我们省很多力气。比如下图,当我们单步跟踪测试代码时,发现高亮那一行的selenium代码的CSS选择器写错了,其实不用重新来过,只需要直接在代码里将选择器替换成一个正确的,再按F10,Visual Studio会自动重新编译修改过的那个函数的代码,并在内存里将函数替换成新的代码并恢复执行。
设置下一行语句
如果在测试的时候,发现有些界面,因为自动化代码执行速度太快了,导致界面还没有显示,自动化代码就在试图操作这个还不存在的界面出现了异常,我们可以在捕捉异常的catch块上设置一个断点,在断点触发时,使用Visual Studio的设置下一行语句的功能,将测试用例从我们想要开始的地方重新执行代码。如下图,我右键单击高亮那一行下面的第三行,选择“设置下一语句”功能,跳过高亮的那一行和下面的一行,恢复代码执行:
需要注意的是,设置下一行语句这个功能只能在当前程序中断的函数上使用,可以向前也可以向后,但是不能跳出函数的范围。