2015-09-27 53 views
0

在我的Java應用程序,我想切換到WordPress的IFRAME content_ifr用Java代碼:硒PhantomJSDriver - 無法切換到幀

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

但不斷得到一個以下異常:

org.openqa.selenium.NoSuchFrameException: {"errorMessage":"Unable to switch to frame","request":{"headers":{"Accept":"application/json, image/png","Connection":"Keep-Alive","Content-Length":"20","Content-Type":"application/json; charset=utf-8","Host":"localhost:15910"},"httpVersion":"1.1","method":"POST","post":"{\"id\":\"content_ifr\"}","url":"/frame","urlParsed":{"anchor":"","query":"","file":"frame","directory":"/","path":"/frame","relative":"/frame","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/frame","queryKey":{},"chunks":["frame"]},"urlOriginal":"/session/d2c0de40-6349-16e5-8bdf-f3a5c98d0edc/frame"}} 

驅動程序信息:

Driver info: org.openqa.selenium.phantomjs.PhantomJSDriver 
Capabilities [{applicationCacheEnabled=false, rotatable=false, handlesAlerts=false, databaseEnabled=false, version=1.9.8, platform=XP, browserConnectionEnabled=false, proxy={proxyType=direct}, nativeEvents=true, acceptSslCerts=false, driverVersion=1.1.0, locationContextEnabled=false, webStorageEnabled=false, browserName=phantomjs, takesScreenshot=true, driverName=ghostdriver, javascriptEnabled=true, cssSelectorsEnabled=true}] 

我使用:

selenium 2.47.2 
phantomjs-1.9.8-windows 

什麼可能是錯誤的?

回答

0

我實現了一個骯髒的黑客:

List<WebElement> elements = driver.findElements(By.tagName("iframe")); 
WebElement iframe = null; 
for (int i = 0; i < elements.size(); i++) { 
    if("content_ifr".equals(elements.get(i).getAttribute("id"))) { 
     iframe = elements.get(i); 
     break; 
    } 
} 
driver.switchTo().frame(iframe); 

現在的作品..

+0

爲什麼不'driver.switchTo()框架(driver.findElement(By.id( 「content_ifr」)) )'?此外,你可以檢查頁面上是否有兩個元素與該ID?如果是這樣,iframe是否是第一個? –

+0

仍然無法正常工作..有時content_ifr無法找到某種原因.. – alexanoid

+0

你可能需要一個明確的等待,等待的iframe被放入頁面。 –