2015-04-24 2 views
0

! [по уходу за детьми кадры, имеющие динамическое имя/идентификатор] [1]Селен WebDriver-Не удается найти какой-либо элемент внутри второго ребенка фрейма (с динамическим именем)

браузера IE8

I нужно найти подсказку во втором дочернем iframe.

родительский IFrame является зафиксировав id.Able, чтобы найти элемент внутри этого с помощью driver.switchTo(). Рама (0) Первый ребенок IFrame оказывает динамическое имя/идентификатор. cframe_ms_id59. Только последняя часть меняется.i.e. id59 я могу найти этот элемент с помощью xpath driver.findElement (By.xpath ("// IFrame [содержит (@Id, 'cframe_ms']"))

Но моя подсказку короба с текстовым полем находится в 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** 
+0

Какой снимок экрана? –

+0

Измените свой вопрос и добавьте html-код. – LittlePanda

+0

Предоставлена ​​структура кода HTML .. – Aakash

ответ

1

Я думаю, что это полезно для вас. получить xpath из дочернего кадра до набрать эту строку кода -

driver.switchTo(). Frame (1);

чем вы переключитесь на дочерний кадр, чтобы получить легко xpath или class/id элементов детского кадра.

назад к типу фрейма по умолчанию этот код строки -

driver.switchTo() defaultContent().

где ваш прикрепленный скриншот ??

+0

Привет, Kaushik, Этот подход не работает, так как я не могу переключить второго Child iframe.Plz посмотреть Код HTML, чтобы получить более ясное представление. – Aakash

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 
+0

Привет, пользователь903039. Пожалуйста, снова просмотрите структуру HTML-кода. Третий iframe с id = "cframe_ms_id54 не находится во втором iframe.Его под родительским iframe имеет id = adviseDesktop.I также проверял ваш код. Но он не работает, потому что третий iframe находится под родительским iframe adviseDesktop – Aakash

+0

@Aakash, я исправил код в своем ответе выше, чтобы отразить ваши комментарии. Тем не менее, я предлагаю вам поговорить с разработчиками и посмотреть, могут ли они поставить статический идентификатор во всех кадрах, по сути, по крайней мере, все элементы, с которыми необходимо взаимодействовать в тестах автоматизации, чтобы сделать ваш тестовый код надежным. – raluru

Смежные вопросы