2016-11-16 3 views
0

У меня возникли проблемы с попыткой щелкнуть по кнопке в модальном диалоговом окне. Я искал в Интернете, но, похоже, я либо смущаюсь (скорее всего), либо решения на других arent, работающих в моем конкретном случае.Трудности определения определенной кнопки в модальном диалоговом окне - Selenium

Прецедент выглядит следующим образом:

  1. В странице содержимого по умолчанию я нажимаю на иконку, чтобы вставить изображение в текстовый редактор.

  2. модальный диалог всплывает и я нажимаю кнопку загрузки

  3. винда файл навигатор открывает и я вставить путь к файлу в поле «Имя файла» textinputbox и подтвердить представление. Окна файл navigatr закрывает

  4. модальное диалоговое обновления с именем загруженного файла и я нажимаю кнопку «Добавить»

  5. новое окно всплывает, и я подтверждаю некоторые дополнительные детали, проверяя флажок и щелкнув ok button

  6. Всплывающее окно исчезает, и модадлялог с шага 2 и 4 либо исчезает, либо переходит в новый модальный диалог, предупреждающий меня, что есть дубликаты файлов, а также «обновлять» или «отменить». Я хочу нажать эту кнопку обновления.

Я сбегаю с последнего последнего шага. Я просто не могу найти эту кнопку. Возможно, это был долгий день, и я теперь слишком устал. Таким образом, помощь будет оценена до того, как я начну разворачивать стол.

HTML, выглядит следующим образом:

<div class="d2l-dialog" style="top: 318px; width: 400px; height: 420px; left: 680px; z-index: 1008;"> 
<div class="d2l-dialog-inner" style="height: 418px;"> 
<iframe class="d2l-dialog-frame" src="/d2l/lp/fileinput/6606/Duplicates?files=photo.jpg" name="d2l_c_1_783" allowfullscreen="" scrolling="no" style="width: 398px; height: 418px; overflow: hidden;" frameborder="0"> 
<!DOCTYPE html> 
<html data-lang-default="en-GB" lang="en-GB"> 
<head> 
<body class="d2l-body d2l-typography vui-typography d2l-dialog-document-body" style="overflow: hidden;"> 
<div id="MathJax_Message" style="display: none;"></div> 
<div class="d2l-dialog-width d2l_1_0_132 d2l-dialog-flex" data-height="420" style="width: 398px;"> 
<div class="d2l-dialog-title d2l-dragdrop-draggable"> 
<div class="d2l-dialog-body" style="height: 336px;"> 
<div class="d2l-dialog-footer-container"> 
<div class="d2l-dialog-footer"> 
<div class="d2l-dialog-buttons"> 
<div class="d2l-dialog-button-group"> 
<a id="d2l_1_2_435" class="vui-button d2l-button vui-button-primary" role="button" tabindex="0" aria-disabled="false">Update</a> 
<a id="d2l_1_3_576" class="vui-button d2l-button" role="button" tabindex="0" aria-disabled="false">Cancel</a> 
<span tabindex="0"></span> 
</div> 
<div class="d2l-clear"></div> 
</div> 
<span class="d2l-dialog-resize"></span> 
</div> 
</div> 
</div> 
<script type="text/javascript" src="https://s.brightspace.com/lib/jquery/1.11.0/jquery.min.js"> 
<script type="text/javascript" src="https://s.brightspace.com/lib/jqueryui/1.10.3/jquery-ui.min.js"> 
<script type="text/javascript" src="https://s.brightspace.com/lib/bsi/10.6.2-4/bsi.min.js"> 
<script type="text/javascript" src="/d2l/common/assets/tock/tock.min.js?v=10.6.7.4465-92"> 

Это одна из моих попыток:

Thread.sleep(1000); 
driver.switchTo().activeElement(); 
driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@name, 'd2l_c_1_')]"))); 
driver.findElement(By.xpath("//a[starts-with(@id,'d2l_1_2_']")).click(); 

Он раз на линии:

driver.switchTo().activeElement(); 

Я попытался удалить это, но он не работает. Некоторая помощь будет оценена по достоинству.

ответ

0

Я решил свою проблему, это была глупая ошибка, которую я сделал. На шаге 5 выше я забыл вернуться к исходному окну и затем искать iframe, сам код был в основном прекрасен после некоторой модификации.

npc.get_window_ids(); 
driver.switchTo().window(npc.getWindow2()); 
driver.manage().window().maximize(); 

//click add 
driver.findElement(By.xpath("//input[@type='checkbox']")).click(); 
driver.findElement(By.xpath(".//*[@id='d2l_form']/div[2]/div[1]/table[2]/tbody/tr/td[1]/a")).click(); 

Thread.sleep(1000); 
//forgot to add this line DOH! 
driver.switchTo().window(npc.getWindow1()); 
driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@name, 'd2l_c_1_')]"))); 
driver.findElement(By.xpath("//a[starts-with(@id,'d2l_1_2_')]")).click(); 
Смежные вопросы