2016-07-05 484 views
1

更改iframe可以正常使用Firefox webdriver和Chrome网络驱动程序,但不能使用Microsoft Edge驱动程序。所有其他测试在Edge中都能正常工作,但不会更改iframe。我更新了Edge驱动程序和Windows 10,因为这是一个已知问题,但这仍然没有解决我的问题。有没有其他方法可以解决这个问题?如何解决不能与Microsoft Edge一起使用的iframe?

driver.switchTo().defaultContent(); 
driver.switchTo().frame("settingiframe"); 
driver.findElement(By.id("LibraryConfigurations")).click(); 

走出来的消息是:没有这样的元素发现

+0

检查这... HTTP://stackoverflow.com/questions/10879206/how-to-switch-between-frames-in-selenium-webdriver-使用-java – Amol

+0

代码在正常浏览器上工作,但不在边缘... –

+0

我建议,首先尝试找到框架元素,然后尝试切换到它。 – Amol

回答

2

您需要实现WebDriverWait等待可用然后切换类似如下框架: -

WebDriverWait wait = new WebDriverWait(driver,20); 

driver.switchTo().defaultContent(); 
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("settingiframe")); 

//after successfully switching to frame you need to wait until element to be clickable 
WebElement el = wait.until(ExpectedConditions.elementToBeClickable(By.id("LibraryConfigurations"))); 
el.click(); 

注意: - 对于给定的frame,上述代码将为wait,最长为20秒。如果frame在给定的时间内可用,它将切换到给定的frame。否则,它会抛出TimeoutException

希望它会帮助你... :)

+2

谢谢,你的代码工作正常。 –

相关问题