Selenium2+java+Eclipse-简单对象定位

来源:互联网 发布:微创软件 编辑:程序博客网 时间:2024/06/08 04:44

简单对象的定位

对象的定位是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。一个对象会有各种的(属性),我们可以通过这个属性找到这对象,查看方式可通过各种浏览器。

Firefox:右键-使用firebug查看元素

Chrom:右键-审查元素

webdriver提供了一系列的对象定位方法,常用的有以下几种

· id

· name

· class name

· link text

· partial link text

· tag name

· xpath

· css selector

例如:WebElement username=driver.findElement(By.id(“username”));

相关方法网上资料很多,这里记录下练习过程中遇到的错误。

1.提示“Sytax error,insert “...VariableDeclaratorID”to complete FormalParameterList”

 

解决方法:没有添加main函数,加上即可



2.运行脚本时run as无Java Application选项


解决方法:同问题1,缺少main函数,在要运行的项目中选择一个类,添加一个主函数即可。

public static void main(String[] args) {        

}

 

3.定位元素的xpath正确,却一直提示找不到元素(采用多个frame时)


解决方法:使用selenium IDE录制步骤发现,中间过程有切换到另外的frame,所以导致一直定位不到元素,需要切换到当前frame,找到当前frame的元素属性


4.定位元素的xpath正确,却一直提示找不到元素(没有切换frame时)图中第54行


解决方法:试了各种定位方法,改成css path后成功


 5.登录按键刚开始使用的定位方法是by.id,提示“Session not found”


解决方法:使用selenium IDE录制步骤,获取录制的元素属性,对应改成by.xpath成功找到元素


 

 6.提示“java.lang.IllegalMonitorStateException”


解决方法:将wait(5)改成Thread.sleep(50000);运行正常

该异常会在三种情况下抛出:
1>当前线程不含有当前对象的锁资源的时候,调用obj.wait()方法;
2>当前线程不含有当前对象的锁资源的时候,调用obj.notify()方法。
3>当前线程不含有当前对象的锁资源的时候,调用obj.notifyAll()方法。

 

 7.使用List<WebElement>rows 时,总是提示“the type List is not generic:it cannot be parameterized with arguments<WebElement>”


解决方法:提示需导入List时选错错误,正确应导入import java.util.*;

 

总结:

对象定位首先从id,name,class属性入手

注意观察选择元素中间是否有切换frame,并且切换到子frame后要记得切换回来;

如果该元素只有一个属性,并且有多个元素都采用同一个属性值,则用xpath,css属性定位;

以上实验后如还是提示找不到该元素,则配合使用selenium IDE,录制该元素,获取该元素的属性值(by.xpath)。基本上就可以解决大部分的元素定位问题。


0 0
原创粉丝点击