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
查看当前元素是否在一个frame中,可以通过如下方法
查看元素xpath的方法,通过firebug打开调试,点击左上角的箭头,选择一个元素,邮件元素对应的代码,复制xpath