适用场景:
表达式没错的情况下,
提示定位不到元素,
需要用firepath查看是否有iframe
工具:
firefox浏览器
firepath插件
步骤:
判断元素是否在 iframe 内部
按键【F12】,
用firepath的箭头定位在元素上,
查看firepath导航左上角,显示 Top Window 还是 iframe
若显示 iframe,则该元素在iframe内部,定位元素前需要先切换到iframe-
拷贝 iframe 的 id或name
在页面任意位置按右键【查看元素】,打开查看器;
再【Ctrl + f】、【Enter】,查找 iframe;
找到与上一步相同的iframe名称或id,拷贝。
切换到 iframe内部
(1)先切换
driver.switchTo().frame("iframe的id或名称");
(2)接着写定位元素的代码
//切换到frame内部
driver.switchTo().frame("x-URS-iframe");
//定位登录的元素并操作
WebElement loginname = driver.findElement(By.xpath(".//*/input[contains(@class,'dlemail')]"));
WebElement password = driver.findElement(By.xpath(".//*/input[contains(@class,'dlpwd')]"));
WebElement loginbtn = driver.findElement(By.id("dologin"));
loginname.sendKeys("testname");
password.sendKeys("123456");
loginbtn.click();
-
如果 iframe没有 id 或 name,怎么切换?
(1)先定位 iframe的位置
(2)再代入switch()函数切换
WebElement iframe = driver.findElement(By.className("APP-editor-iframe"));
driver.switchTo().frame(iframe);
- 从iframe内部,切换回默认页面
driver.switchTo().defaultContent();