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

    xiaoxiao2021-12-14  21

    简单对象的定位

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

    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)。基本上就可以解决大部分的元素定位问题。

    转载请注明原文地址: https://ju.6miu.com/read-970029.html

    最新回复(0)