Перейти к содержимому

Аудит и оптимизация QA-процессов
онлайн, начало 29 января
Автоматизация функционального тестирования
онлайн, начало 29 января
Английский для тестировщиков
онлайн, начало 1 февраля
Тестирование REST API
онлайн, начало 1 февраля
Фотография

Selenium 2.0 + IFrames


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 24

#1 STRAY

STRAY

    Новый участник

  • Members
  • Pip
  • 59 сообщений
  • Город:Минск

Отправлено 04 января 2011 - 10:26

Доброго времени суток,

Возникла странная ситуация с кликом по контролу на IFrame (Selenium 2.0 (FireFox WebDriver) + Eclipse + JUnit).
Само переключение на фрейм и поиск нужного контрола проходит без проблем (во всяком случае свойства контрола считываются правильные).

Код фрейма из FireBug:
Изображение

Cледующий код ровным счетом ничего не делает (никаких эксепшнов тоже не возникает):
driver.switchTo().frame(i);
WebElement link = driver.findElement(By.id("editProfile"));
link.click();

Попробовал то же самое проделать через Selenium RC - работает. Эмуляция данной ситуации через Selenium RC в Selenium 2.0 - не работает.
Может кто сталкивался с подобной проблемой в Selenium 2.0 и знает как ее обойти\решить, буду премного благодарен?!
  • 0

#2 ekulgavaya

ekulgavaya

    Новый участник

  • Members
  • Pip
  • 50 сообщений
  • ФИО:Елена
  • Город:Minsk, Belarus


Отправлено 04 января 2011 - 11:18

Может быть дело в том, что id("editProfile") имеет не ссылка а элемент списка, попробуйте добраться к этому элементу используя, например, css
"css=li#editProfile > a"
или xpath
"//li[@id='editProfile']/a"

Я имею ввиду, что скорее всего нужно нажимать именно на ссылку
<a href="blah-blah-blah"> Link </a>

  • 0
In God we trust, the rest we test.

#3 STRAY

STRAY

    Новый участник

  • Members
  • Pip
  • 59 сообщений
  • Город:Минск

Отправлено 04 января 2011 - 11:40

Может быть дело в том, что id("editProfile") имеет не ссылка а элемент списка, попробуйте добраться к этому элементу используя, например, css

"css=li#editProfile > a"
или xpath
"//li[@id='editProfile']/a"

Я имею ввиду, что скорее всего нужно нажимать именно на ссылку
<a href="blah-blah-blah"> Link </a>


Нажимать именно на линк тоже пробовал:
WebElement link = driver.findElement(By.linkText("Edit Profile"));
Результат тот же :(
  • 0

#4 ekulgavaya

ekulgavaya

    Новый участник

  • Members
  • Pip
  • 50 сообщений
  • ФИО:Елена
  • Город:Minsk, Belarus


Отправлено 04 января 2011 - 13:53

А если попробовать
WebElement link = driver.findElement(By.partialLinkText("Profile"));

или
WebElement link = driver.findElement(By.xpath("//li[@id='editProfile']/a" ));

  • 0
In God we trust, the rest we test.

#5 STRAY

STRAY

    Новый участник

  • Members
  • Pip
  • 59 сообщений
  • Город:Минск

Отправлено 04 января 2011 - 14:47

А если попробовать

WebElement link = driver.findElement(By.partialLinkText("Profile"));

или
WebElement link = driver.findElement(By.xpath("//li[@id='editProfile']/a" ));


Все возможные поиски контрола перепробованы и не в них проблема... Сам контрол находится, но метод click() для него не производит никакого действия - вот в чем проблема.
  • 0

#6 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 851 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 04 января 2011 - 20:07

Какая версия Se 2.0? Какая версия FF?
Воспроизводится ли с обычной ссылкой, без JS-обработчика?
  • 0

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


#7 STRAY

STRAY

    Новый участник

  • Members
  • Pip
  • 59 сообщений
  • Город:Минск

Отправлено 04 января 2011 - 21:58

Какая версия Se 2.0? Какая версия FF?
Воспроизводится ли с обычной ссылкой, без JS-обработчика?


Se 2.0b1, FF 3.6.13
Да и вроде как кликаю прямо на ссылку на фрейме, без js обработчика (обычный href).
Клики просто по линкам на главной странице и тп работают нормально... не срабатывает клик именно на контролах iframe'ов (линки, кнопки и тп).
  • 0

#8 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 851 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 05 января 2011 - 08:40


Воспроизводится ли с обычной ссылкой, без JS-обработчика?

Да и вроде как кликаю прямо на ссылку на фрейме, без js обработчика (обычный href).

Dropdown-меню реализовано на обычных ссылках, без JS? Или названиям элементов верить не стоит? :)
Попробуйте сделать отдельную страничку с iframe, на которой ошибка проявляется.
Я попробовал на нескольких примерах -- ссылки в ифреймах нормально работают на указанных версиях браузера и Se.
  • 0

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


#9 STRAY

STRAY

    Новый участник

  • Members
  • Pip
  • 59 сообщений
  • Город:Минск

Отправлено 05 января 2011 - 09:19



Воспроизводится ли с обычной ссылкой, без JS-обработчика?

Да и вроде как кликаю прямо на ссылку на фрейме, без js обработчика (обычный href).

Dropdown-меню реализовано на обычных ссылках, без JS? Или названиям элементов верить не стоит? :)
Попробуйте сделать отдельную страничку с iframe, на которой ошибка проявляется.
Я попробовал на нескольких примерах -- ссылки в ифреймах нормально работают на указанных версиях браузера и Se.


Пардон, если разговор шел про дропдаун фрейм, то да - используется JS. Попробовал загрузить фрейм на всю страницу - результата не дало.
Se 2.0:
        driver.switchTo().frame(3);
        driver.get(driver.getCurrentUrl());
        try {
        	WebElement link = driver.findElement(By.linkText("Edit Profile"));
       		link.click();
        }
        catch (Exception e)
        {
        	System.err.println("Click method exception: " + e.toString());
        }

Эмуляция Se RC:
        driver.switchTo().frame(3);
        try {
       		Selenium selenium = new WebDriverBackedSelenium(driver, driver.getCurrentUrl());
       		selenium.open(driver.getCurrentUrl());
       		selenium.waitForPageToLoad("30000");
       		selenium.click("link=Edit Profile");
       		driver = ((WebDriverBackedSelenium) selenium).getUnderlyingWebDriver();
        }
        catch (Exception e)
        {
        	System.err.println("Click method exception: " + e.toString());
        }
Может делаю что-то не так?
  • 0

#10 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 851 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 05 января 2011 - 09:36

Сделайте отдельную страничку, на которой проблема воспроизводится, и выложите её, иначе угадать причину проблемы совершенно нереально.
Судя по последнему комментарию, проблема не связана с фреймами :)
  • 0

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


#11 adzynia

adzynia

    Постоянный участник

  • Members
  • PipPipPip
  • 210 сообщений
  • ФИО:Дзыня Андрей


Отправлено 12 января 2011 - 18:04

Попробуйте метод clickAt. Меня в selenium 1.x не раз спасало.
  • 0

#12 kvarik

kvarik

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Борис Ходок

Отправлено 12 апреля 2011 - 09:14

Вот, кстати, подниму.

Проблема никак не решилась?

Только что натолкнулся на подобную, но в эксплорере. Хотя проверил фф, там тоже не работает.
Начал ковырять WD потому, что так и не нашёл решения проблемы с вылетанием теста при переходе в фрейм в ие с RC.
  • 0

#13 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 851 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 12 апреля 2011 - 09:27

Только что натолкнулся на подобную, но в эксплорере. Хотя проверил фф, там тоже не работает.
Начал ковырять WD потому, что так и не нашёл решения проблемы с вылетанием теста при переходе в фрейм в ие с RC.

Прикладывайте примеры, на которых проявляется ошибка, иначе шанс получить ответ или совет стремится к нулю.
  • 0

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


#14 kvarik

kvarik

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Борис Ходок

Отправлено 12 апреля 2011 - 10:21

Вот приложение в одноклассниках.
  • 0

#15 kvarik

kvarik

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Борис Ходок

Отправлено 12 апреля 2011 - 10:33

Приложение открывается в iframe с названием app

Не срабатывает вот такой код (это руби):
driver.switch_to.frame "app"
driver.find_element(:xpath, "//a[@href='/offers/443']").click

  • 0

#16 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 851 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 13 апреля 2011 - 08:19

Приложение открывается в iframe с названием app

Не срабатывает вот такой код (это руби):

driver.switch_to.frame "app"
driver.find_element(:xpath, "//a[@href='/offers/443']").click

И какая ошибка возникает? Фрейм не находит? Или элемент не находит? Или находит, но не может кликнуть на него?
  • 0

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


#17 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 851 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 13 апреля 2011 - 09:10

Приложение открывается в iframe с названием app

Не срабатывает вот такой код (это руби):

driver.switch_to.frame "app"
driver.find_element(:xpath, "//a[@href='/offers/443']").click

Да, и как всегда -- какая версия Selenium? Какая версия браузера?
  • 0

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


#18 Vitalik_V

Vitalik_V

    Активный участник

  • Members
  • PipPip
  • 149 сообщений
  • ФИО:Виталий
  • Город:Харьков

Отправлено 13 апреля 2011 - 09:21

А текст ошибки можно?
  • 0

#19 kvarik

kvarik

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Борис Ходок

Отправлено 13 апреля 2011 - 17:59


Приложение открывается в iframe с названием app

Не срабатывает вот такой код (это руби):

driver.switch_to.frame "app"
driver.find_element(:xpath, "//a[@href='/offers/443']").click

Да, и как всегда -- какая версия Selenium? Какая версия браузера?


2.0b3, IE8
  • 0

#20 kvarik

kvarik

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Борис Ходок

Отправлено 13 апреля 2011 - 18:00

А текст ошибки можно?


Ошибки не выдаётся. Он просто тупо не кликает.
  • 0


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале