適用場景:
表達式?jīng)]錯的情況下,
提示定位不到元素,
需要用firepath查看是否有iframe
工具:
firefox瀏覽器
firepath插件
步驟:
判斷元素是否在 iframe 內(nèi)部
按鍵【F12】,
用firepath的箭頭定位在元素上,
查看firepath導(dǎo)航左上角,顯示 Top Window 還是 iframe
若顯示 iframe,則該元素在iframe內(nèi)部,定位元素前需要先切換到iframe-
拷貝 iframe 的 id或name
在頁面任意位置按右鍵【查看元素】,打開查看器;
再【Ctrl + f】、【Enter】,查找 iframe;
找到與上一步相同的iframe名稱或id,拷貝。
判斷元素是否在iframe內(nèi)部 切換到 iframe內(nèi)部
(1)先切換
driver.switchTo().frame("iframe的id或名稱");
(2)接著寫定位元素的代碼
//切換到frame內(nèi)部
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()函數(shù)切換
WebElement iframe = driver.findElement(By.className("APP-editor-iframe"));
driver.switchTo().frame(iframe);
- 從iframe內(nèi)部,切換回默認頁面
driver.switchTo().defaultContent();
