![子帧具有动态名称/id][1]
浏览器-IE8
我必须在第二个子iframe中找到一个提示框。
父iframe具有固定的id.Able来查找使用driver. SwitchTo().frame(0)第一个子iframe具有动态名称/id。cframe_ms_id59
。只有最后一部分改变。即id59
我能够使用xpath
driver.findElement(By.xpath("//iframe[包含(@id,'cframe_ms']")找到这个元素
但是我的提示框有一个文本框驻留在第二个孩子iframe(绿色)****具有动态名称/id。**我无法进入这个iframe,也无法找到里面的任何元素。
Plz suggest some solution
这里是超文本标记语言代码结构-
<html>
<head>
<body>
<iframe id="adviseDesktop" src="...//path">**//Parent Iframe-Able to
| find this iframe using driver.switchto().frame(0)**
|------ <html>
<head>
<body class="desktopbody" id="desktop body">
| ------code----
| ------------code---
|------------ <iframe name="cframe_ms_id59" id="cframe_ms_id59" src='abc.jsp">**//first child iframe last part of name and id changing dynamically**
| -------------
| ------------
|------------- <table class="mdiwindow" id =dwindow_ms_99"
| <tr height="100%">
|--- <td class="mdiwindowContent">
|-- <iframe name="cframe_ms_id54" id="cframe_ms_id54" src="/xysx/modal/desktop/main.jspx">**//Second child iframe last part of name and id changing dynamically.IFrame where our text box of prompt box resides** |
|------------
| -----------------
|----- <input name=balance_val class="x27" id="balance_val>**//textbox**
我认为它对你有用。在键入此代码行之前从子帧获取xpath-
驱动程序。切换到()。框架(1);
比您切换到子框架,这样您就可以轻松获得子框架元素的xpath或class/id。
返回默认帧类型此代码行-
驱动程序。切换到()。默认内容();
你附上的截图在哪里??
查看超文本标记语言,您似乎在包含要查找的输入的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