我有一个网页,点击链接后会启动。打开的网页会显示一个覆盖屏幕,使前景变得模糊,而前景处于活动状态时则处于非活动状态。但是我无法通过定位器e.t.c找到该叠加层(前景)上的任何元素。 我尝试在该叠加层上定位元素,但仅通过FirePath和firebug选择背景区域边框,嵌入的HTML代码中不存在覆盖屏幕符号。
以下是相同的DOM结构,它突出显示背景页面,但不突出显示叠加前景窗口上的元素。
<table id="WebPart_twp146520052" cellspacing="0" cellpadding="0" border="0" style="width:100%;">
<tbody>
<tr>
<td>
<div id="TopazWebPartManager1_twp146520052">
<div class="masterWrapper">
<script type="text/javascript"> AC_FL_RunContent( 'codebase','https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','100%','height','100%','src','/MyViewRetirement','quality','high','pluginspage','https://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','/MyViewRetirement','allowFullScreen','true', 'id','MyViewRetirement' ); </script>
<embed width="100%" height="100%" type="application/x-shockwave-flash" allowfullscreen="true" pluginspage="https://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Versi[enter image description here][1]on=ShockwaveFlash" quality="high" src="/MyViewRetirement.swf"/>
</div>
</div>
</td>
</tr>
</tbody>
</table>
任何人都可以请我这个..
答案 0 :(得分:0)
试试这个:
String winHandleBefore = driver.getWindowHandle();
for (String winHandle : driver.getWindowHandles())
{
driver.switchTo().window(winHandle);
String bodyText = driver.findElement(By.tagName("body")).getText();
if (bodyText.contains("TopazWebPartManager1_twp146520052"))
{
String str_ImageSrc = driver.findElement(By.id("TopazWebPartManager1_twp146520052")).getAttribute("src");
if (str_ImageSrc.contains(".swf"))
{
System.out.println("Flash media recognised, hence closing the window");
linkresult13.add("Fail");
driver.switchTo().window(winHandleBefore);
break;
}
}
}
我希望这对你有用。如果没有,请尝试调试它。 Java不是我的母语。
基本上这将拉取正文文本,查找ID名称,如果它匹配,则会通过ID抓取您要查找的元素,然后查看它是否包含&#34; .swf&#34;。
您可能还想查看此处发布的while和迭代器:WebDriver.getWindowHandle() method