Selenium Webdriver-无法在第二个子iframe中找到任何元素(具有动态名称)

时间:2015-04-24 04:57:41

标签: iframe selenium-webdriver

![子框架具有动态名称/ ID ] [1]

浏览器-IE8

我必须在第二个子iframe中找到一个提示框。

父iframe具有固定的id。能够在其中找到元素 使用driver.switchTo()。frame(0) 第一个子iframe具有动态名称/ ID。 snprintf。只有最后一部分更改.i.e。 cframe_ms_id59 我能够使用id59找到这个元素 driver.findElement(By.xpath(“// iframe [contains(@id,'cframe_ms']”))

但是我的提示框有一个文本框位于第二个孩子iframe (绿色)****,其中包含动态名称/ id。**我无法进入此内部iframe 并且无法在其中找到任何元素。

xpath

以下是HTML代码结构 -

Plz suggest some solution

2 个答案:

答案 0 :(得分:1)

我觉得它对你有用。 在输入此代码行之前从子框架中获取xpath -

  

driver.switchTo()框架(1);

而不是切换到子框架,因此您可以轻松获得子框架元素的xpath或class / id。

返回默认帧类型此代码行 -

  

driver.switchTo()defaultContent();

你的屏幕截图在哪里?

答案 1 :(得分:0)

查看HTML,您似乎在iframe中的iframe中包含iframe,其中包含您要查找的输入。为此,您需要按顺序切换到帧。请参阅下面的C#代码。

var textbox = driver.SwitchTo()
                .Frame("adviseDesktop")    //control in frame with id="adviseDesktop"
                .SwitchTo()
                .Frame(1)                  //control in frame with id="cframe_ms_id54"
                .FindElement(By.Id("balance_val")); //input with id="balance_val"

完成该帧中的操作后,您需要切换到默认内容。

    //control in frame with id="cframe_ms_id54"
    _driver.SwitchTo()
                     .ParentFrame() //control in frame with id="adviseDesktop"
                     .SwitchTo()
                     .DefaultContent(); //control in topmost body of the document