2014-11-04 46 views
0

我嘗試運行這段代碼的iframe:硒找不到它出現在我的瀏覽器

driver.switchTo().frame(driver.findElement(frameBy));

其中farmeBy.selector == #offer-carousel > div > div > div.item.popup.w-control-popup.active > div > div > div > iframe

我得到no such element exception

這怎麼可能,如果我得到一個結果,當我在鉻檢測工具中運行:

$(「#報價傳送帶> DIV> DIV> div.item.popup.w控制,彈出。主動> DIV> DIV> DIV>的iframe「)

回答

1

我猜你沒有指定訪問元素的方式。

從您給出的代碼片段中,您必須嘗試使用​​cssselector來定位該元素。所以,代碼可以這樣寫:

driver.switchTo().frame(driver.findElement(By.cssSelector(frameBy)));

否則,如果你有框架的名稱/ ID,您可以使用下面的代碼:

driver.switchTo().frame("name or id");

或者,你可以使用iframe的指標:

driver.switchTo().frame(0);

注:上面的代碼只能如果在網頁只是一個iframe中。如果有多個,請相應地使用必要的索引。

1

我想findElement沒有找到你的iFrame,因爲你沒有指定是否frameBy是一個ID,一個類或其他任何東西。您應該使用driver.findElement(By.id(frameBy))

嘗試以下操作:

String frameBy = "YOUR_FRAME_ID"; 
WebElement iFrame = driver.findElement(By.id(frameBy)); 
driver.switchTo().frame(iFrame); 

這裏是搜索第一個iframe中無論你的iframe的ID是什麼的另一種方式:

driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(0)); 
相關問題