2016-07-15 106 views
1

我有一个页面需要使用Selenium Webdriver自动执行。Selenium webdriver:无法检测框架集

我对网页HTML(通过Firebug的检查):

<html> 
<head>....</head> 
<frameset onload="DO_Box.setReadyState()" rows="*,0" frameborder="0" framespacing="0" border="0" name="frmMaster"> 
    <frame src="/SomeSource.jsp" marginheight="1" marginwidth="2" scrolling="no" name="frmContent"> 
</frameset> 
</html> 

在这里,我试图driver.SwitchTo().DefaultContent()然后driver.SwitchTo().frame()。试图通过索引,帧名,Xpath,类名,名称来定位帧,但都是徒劳的。

我的驱动程序无法找到父框架及其中的任何元素。请帮我解决这个问题。

回答

0

有没有必要切换到frameset。你直接可以如下切换到frame并找到元素: -

driver.SwitchTo().Frame("frmContent"); 
// do your stuff here 
.................. 
driver.SwitchTo().DefaultContent(); 

编辑: - 如果frame需要时间来加载,尝试用WebDriverWait等到frame如下存在: -

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 

IWebElement frame = wait.Until(ExpectedConditions.ElementExists(By.Name("frmContent"))); 
driver.SwitchTo().Frame(frame); 
// do your stuff here 
.................. 
driver.SwitchTo().DefaultContent(); 

希望它会帮助你.. :)

+0

我已经尝试过它..still没有这样的框架异常:( –

+0

@AnilVaddepally你有没有尝试过一些等待? –

+0

@AnilVaddepally尝试更新的答案 –

相关问题