selenium之元素定位

元素定位不到是selenium使用时经常遇到的问题,目前遇到的最多的就是因为元素在frame元素中,导致定位不到。

此时我们要首先跳转到元素所在frame里,再对元素进行定位和操作,操作完成之后,记得要退出当前frame再继续操作,如下

 

// 进入id为irf2的frame

driver.switchTo().frame("irf2");

//定位元素

driver.findElement(By.xpath("/html/body/div/div/form/div/div[3]/div/div[2]/input[2]")).click();                

// 跳出当前frame到默认

driver.switchTo().defaultContent();

对于没有id或者name的frame,就要先通过xpath定位到frame,再进行跳转,如下

 

        // 先通过xpath定位,找到frame元素,再 调到frame中

        WebElement iframe = driver.findElement(By.xpath("/html/body/div[2]/iframe"));

        driver.switchTo().frame(iframe);

查看一个网页中是否含有frame,可以通过Chrome的开发者工具进行搜索,如下,使用快捷键Ctrl+shift+I进入开发者工具

切换到console窗口,在下面输入$("iframe"),回车,即可看到网页中含有的frame信息,如下,含有一个frame

selenium之元素定位

 

查看当前元素是否在一个frame中,可以通过如下方法

selenium之元素定位

 

selenium之元素定位

 

selenium之元素定位

查看元素xpath的方法,通过firebug打开调试,点击左上角的箭头,选择一个元素,邮件元素对应的代码,复制xpath

selenium之元素定位