Webdriver切换到叠加窗口

时间:2012-09-25 23:02:50

标签: webdriver frame

Webdriver无法在叠加层中找到对象。

我正在尝试切换到框架并单击框架中的对象。但我无法做到。

我尝试了以下HTML中的所有“id”。但我找不到它。

请帮帮我

下面是代码

driver.switchTo().frame(driver.findElement(By.id("fancybox-outer")));
driver.findElement(By.xpath(OR.getProperty("ContactSaveConfirmYes_Button"))).click();
driver.switchTo().defaultContent();

这是HTML:

我想点击此叠加层中的“是”按钮。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<body onload="showLossHistoryLink();  contactTypeDisplay();openInsuredContact();showErrorMessages();checkInjuryFields();">
<div class="billboardWindow124">
<div id="fancybox-tmp" style="padding: 50px;"/>
<div id="fancybox-loading" style="display: none;">
<div id="fancybox-overlay" style="background-color: rgb(119, 119, 119); opacity: 0.2;  cursor: auto; height: 850px; display: block;"/>
<div id="fancybox-wrap" style="width: 319px; height: auto; top: 574px; left: 452px; display: block;"> 
<div id="fancybox-outer">
<div id="fancybox-bg-n" class="fancybox-bg"/>
<div id="fancybox-bg-ne" class="fancybox-bg"/>
<div id="fancybox-bg-e" class="fancybox-bg"/>
<div id="fancybox-bg-se" class="fancybox-bg"/>
<div id="fancybox-bg-s" class="fancybox-bg"/>
<div id="fancybox-bg-sw" class="fancybox-bg"/>
<div id="fancybox-bg-w" class="fancybox-bg"/>
<div id="fancybox-bg-nw" class="fancybox-bg"/>
<div id="fancybox-content" style="border-width: 10px; width: 299px; height: auto;">
<div style="width:auto;height:auto;overflow: auto;position:relative;">
<form id="formSaveContact" action="#">
<div id="confirmSaveContact" class="confirmSaveContact">
<p>Are you sure you want to save this contact?</p>
<input type="hidden" value="" name="policyType"/>
<input id="yesBtn2" type="image" src="img/eng-usa/button_yes.jpg" value="yes"/>
<input id="noBtn2" type="image" src="img/eng-usa/button_no.jpg" value="no"/>
</form>
</div>
</div>
<a id="fancybox-close"/>
<div id="fancybox-title" class="" style="display: none;"/>
<a id="fancybox-left" href="javascript:;">
<a id="fancybox-right" href="javascript:;">
</div>
</div>
<div id="ui-datepicker-div" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"/>
</body>
</html>**

3 个答案:

答案 0 :(得分:0)

我在输入iframe时遇到了问题。如果js适合你,请尝试我的解决方案。

IFrame in webdriver. Typing in RTE

答案 1 :(得分:0)

它对我有用......我不确定这是否适用于其他人......基于UI设计师。

重叠对象被视为驱动程序,不会被视为框架。

因此无需切换到框架并查找对象...而是在不切换的情况下找到对象。

Aariff

答案 2 :(得分:0)

@driver.switch_to.window( @driver.window_handles.last ){

@driver.find_elemnt(:id,name)
@driver.find_elemnt(:id,age)

@driver.find_elemnt(:id,eid)
@driver.find_elemnt(:id,company)

}