Iframe 硒与铁

Iframe 硒与铁,iframe,selenium,Iframe,Selenium,我有一个iframe,当我单击页面上的选项卡时,它会被加载。当我使用Firebug查看IE8上的iframe时,我看到的是: iframe id=tabContextFrame class=contextFrame contentEditable=inherit src=/xyz.dt?forward=show&layouttype=NoHeader&runid=1234 name=tabContextFrame url=/xyz.dt?forward=show&layouttype=NoHea

我有一个iframe,当我单击页面上的选项卡时,它会被加载。当我使用Firebug查看IE8上的iframe时,我看到的是:

iframe id=tabContextFrame class=contextFrame contentEditable=inherit src=/xyz.dt?forward=show&layouttype=NoHeader&runid=1234 name=tabContextFrame url=/xyz.dt?forward=show&layouttype=NoHeader&runid=1234滚动=自动

就这样,iframe下面的层次结构是看不见的。我想单击iframe中的链接。为了找到iframe中的元素,我做了一个
selenium。单击(“加载iframe的选项卡上”)
,然后单击
selenium.getHtmlSource()
。从这个来源,我至少可以找到我感兴趣的链接。我做了一个
selenium。单击(“//span[text()='Link']”)
,但它似乎什么都没做。有什么想法吗

代码如下:

selenium.click("//span[text()='tab that loads iframe']");   
Thread.sleep(5000);   
selenium.selectFrame("tabContextFrame");         
selenium.mouseOver("//span[text()='Link']");   
selenium.mouseDown("//span[text()='Link']");  
selenium.mouseUp("//span[text()='Link']");   
Thread.sleep(5000);   
selenium.selectFrame("null");  

我猜您正在使用Selenium 1.0。您看过Selenium 2.0和WebDriver吗。我发现了以下几点,这对我很有用:

问:如何在contentEditable iframe中键入内容?答:假设 iframe被命名为“foo”:

有时这不起作用,这是因为iframe 没有任何内容。在Firefox上,您可以执行以下操作 在“发送键”之前:


我在

使用driver.switchTo().defaultContent()上找到了这个;首先,然后执行操作

您是否使用web驱动程序尝试了selenium 2.0?您可以使用driver.SwitchTo().Frame()可能重复的
driver.switchTo().frame("foo");
WebElement editable = driver.switchTo().activeElement(); 
editable.sendKeys("Your text here"); 
((JavascriptExecutor) driver).executeScript("document.body.innerHTML = '<br>'"); 
driver.switchTo().defaultContent();