Как работать с всплывающими окнами в селене - PullRequest
2 голосов
/ 17 августа 2011

Я занимаюсь веб-автоматизацией с помощью Selenium RC. Я новичок в Selenium RC и сталкиваюсь с проблемами (возможно, с кривой обучения) при выполнении автоматизации. Я использую Java с Eclipse IDE для кодирования селена RC.

Сценарий: у меня есть экран со ссылкой. при нажатии откроется окно поиска, которое содержит много имен (сетка). Теперь я должен выбрать значение в сетке, щелкнув непосредственно по любой строке / записи. Или я могу использовать опцию поиска и выбрать запись. Проблемы

  1. мой записанный скрипт НЕ отвечает на всплывающие окна.
  2. Есть ли какая-либо команда для "двойного щелчка" в селене.

@ rs79 - У меня это не сработало. Вот мой код:

selenium.click("link=eName");   //click the link to open the lookup window
//lookup window
selenium.focus("Associate"); <br>
selenium.waitForPopUp("Associat", "20000");
selenium.selectWindow("Associat");
selenium.type("id=SearchTextBox", "xyz"); //Enter the text in search field of lookup
selenium.click("id=SearchButton"); // click search button on lookup window <br>

Пожалуйста, поправьте меня, если я ошибаюсь. Признателен, если кто-нибудь даст мне больше предложений.

Ответы [ 3 ]

1 голос
/ 17 августа 2011

Без доступа к вашей DOM я бы рекомендовал записывать с использованием IDE и адаптировать правильный контекст из записанных действий в RC.Среда IDE неплохо справляется с захватом контекста для модов и всплывающих окон.

После захвата вот несколько ошибок:

  1. Для iFrames измените идентификатор захваченного кадра на более общий (css) локатор
  2. Будьте осторожны с разница между selectWindow() и selectFrame()
0 голосов
/ 11 октября 2018

Это поможет обрабатывать запросы Salesforce

Iterator it = windows.iterator();
String parentwindow =(String) it.next();
String childWindow =(String) it.next();

// Switch to parent window
driver.switchTo().window(childWindow);
MiscUtils.pauseForElementToBePresent(3000L);
driver.switchTo().frame("your frame NAME/ID");
MiscUtils.pauseForElementToBePresent(3000L);

// your step to perform on child page.
driver.findElement(By.linkText("123Test")).click();
MiscUtils.pauseForElementToBePresent(3000L);

//if popup is getting close automatically switch to parent window otherwise use "driver.quit();" to close popup
driver.switchTo().window(parentwindow);
driver.switchTo().defaultContent();
0 голосов
/ 18 августа 2011

Если это всплывающее окно, а не всплывающее окно, то вы можете попробовать firebug, чтобы найти нужный элемент или запись.
Теперь скопируйте его xpath и используйте его в своем коде.

Та же проблема, с которой я столкнулся и решил этот метод, так как xpath from fire bug детализирован и находит правильное окно.

После копирования xpath убедитесь, что в пути указан //.

Спасибо

...