Colorbox iframe名称不断变化,因此我无法使用Selenium选择框架

时间:2011-08-12 22:07:05

标签: selenium colorbox

我正在尝试自动化一个简单的页面,其中包含一个加载iFrame的颜色框。每当我在Selenium中记录测试时,它都会捕获iframe。但是当我重新运行测试时,它无法抓住内部的iframe。我调查了它,你会看到这段代码:

命令:selectFrame 目标:iframe_1313186641607 价值:(空白)

我去Firefox并检查元素,我看到了:

<div>
<div id="cboxMiddleLeft" style="float: left; height: 558px;"></div>
<div id="cboxContent" style="float: left; width: 698px; height: 558px;">
<div id="cboxLoadedContent" style="display: block; width: 698px; overflow: auto; height: 530px;">
<iframe id="cboxIframe" frameborder="0" src="SelectCourseOptions.aspx?courseno=111&subject=ACC&term=Fall 2010" name="iframe_1313186641607">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<body style="background-color: White">
<form id="form1" action="SelectCourseOptions.aspx?courseno=111&subject=ACC&term=Fall+2010" method="post" name="form1">
<div>

因此,您可以看到它与iframe的“名称”匹配。然后,我将重新运行测试并且无法选择iframe,我将再次检查元素并看到:

<div>
<div id="cboxMiddleLeft" style="float: left; height: 558px;"></div>
<div id="cboxContent" style="float: left; width: 698px; height: 558px;">
<div id="cboxLoadedContent" style="display: block; width: 698px; overflow: auto; height: 530px;">
<iframe id="cboxIframe" frameborder="0" src="SelectCourseOptions.aspx?courseno=111&subject=ACC&term=Fall 2010" name="iframe_1313186725931">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<body style="background-color: White">
<form id="form1" action="SelectCourseOptions.aspx?courseno=111&subject=ACC&term=Fall+2010" method="post" name="form1">
<div>

现在您可以看到iframe名称:

名称= “iframe_1313186725931”

这与我第一次录制测试时不同:

名称= “iframe_1313186641607”

为了好玩,我关闭了彩盒并重新打开,名称又改变了。我该如何解决这个问题?似乎colorbox每次只生成一个动态名称,所以我不能在Selenium中选择它?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我想出了如何做到这一点,我只是一个Selenium n00b。我需要通过id而不是name标签选择colorbox。像这样:

命令:selectFrame目标:id = cboxIframe值:(空白)

有效!

答案 1 :(得分:0)

如果其他人遇到与动态iframe类似的问题,请注意我使用的是php selenium webdriver&#34; facebook&#34;:

$iFrame = $webDriver->findElement(WebDriverBy::xpath('//iframe[@id="cboxIframe"]'));

$iFrame = $webDriver>findElement(WebDriverBy::xpath('//iframe[@class="cboxIframe"]'));

$iFrame = $webDriver->findElement(WebDriverBy::xpath('//iframe[@name="cboxIframe"]'));

最后将焦点切换到iFrame

$webDriver->switchTo()->frame($iFrame);