2013-04-16 94 views
1

Xpath找到嵌套的框架元素時發生問題。我的代碼是:Xpath無法找到嵌套的框架元素

<html> 
<head> 
<frameset border="0" framespacing="0" frameborder="0"> 
<frame noresize="" name="main" src="main.py"> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<body> 
<div id="cboxOverlay" style="display: none;"></div> 
<div id="colorbox" class="" style="padding-bottom: 57px; padding-right: 28px; display: none;"> 
<div id="main_loading" class="main_loading"></div> 
<div id="spin_loading" class="spin-loading"></div> 
<div id="page_header"> 
<div id="header2"> 
<div id="daemons_controller.py" class="header2_menu_div" style="display:none;"></div> 
<div id="main_report.py" class="header2_menu_div" style="display:none;"></div> 
<div id="manage_host.py" class="header2_menu_div" style="display:none;"></div> 
<div id="main.py" class="header2_menu_div"></div> 
<div id="header2_div" style="display:none;"> 
** 

    <div id="login_user"> 
    <img title="User" alt="" src="images/new_icons/user.png" style="width:16px;height:16px;"> 

** 
<span> 
</div> 
</div> 
<div id="user_options"> 
<div id="ubr_sub_menu" class="sub-sub-menu" style="right:auto;"> 
<div id="ubre_sub_menu" class="sub-sub-menu" style="right:auto;"> 
<div id="idu_sub_menu" class="sub-sub-menu" style="right:auto;"> 
<div id="header3"> 
<div id="container"> 
<div id="events_logs_box" style="display: none;"> 
<div id="footer"> 
<div style="clear:both;"></div> 
</body> 
</html> 
</frame> 
</frameset> 
<pixelperfectlastoverlay id="ppReloadLastOverlay"></pixelperfectlastoverlay> 
</html> 

的Xpath = // DIV [@ ID = 'login_user'] 結果給出了一個空的結果。 我需要該ID的位置對於我的硒工具來定位元素。有什麼方法可以通過Xpath定位器來定位框架。

+0

'$驅動程序 - > SWITCHTO() - >框架($驅動程序 - > findElement(WebDriverBy ::名稱( '主')))' – cprn

回答

0

試試這個XPath,這個問題可能是因爲你使用()而不是[]

//div[@id='login_user'] 
+0

它不起作用,因爲嵌套框架發生問題。問題是由於嵌套框架。有任何方法來查找嵌套框架中元素的位置 – user2164370

1

使用此方法來發現裏面IFRAME元素:

driver.switchTo().frame((WebElement) driver.findElement(By.xpath("//iframe"))); 

現在你在iframe中,你可以用正常的方式找到任何元素,因爲你已經在iframe中了。如果你想切換到父窗口,使用此:

driver.switchTo().defaultContent();