2013-04-16 72 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();