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

Фотография

Как открыть несколько вкладок и переключаться по ним ?


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

#1 mosketrem

mosketrem

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

  • Members
  • Pip
  • 68 сообщений
  • ФИО:Дмитрий


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

Привет !
Есть задача проверять синхронизацию почтового клиента с GMail. Т.е. нужно зайти на gmail (скажем аккаунт Б), послать на определенный аккаунт письмо (аккаунт А), потом открыть другую вкладку, там зайти на сайт, который получает с нашего аккаунта А письма (и посылает тоже от его имени), убедиться, что только что пришедшее на аккаунт А письмо там показывается. Так же нужно проделывать всякие манипуляции с письмами (переносить в разные папки, отмечать звездой и т.д.) и соответственно переключаться между вкладками для проверки зеркального соответствия.
Вот я и пытаюсь понять как мне в IDE сделать переходы туда-сюда. Гуглил, пробовал, не получается.

Помогите кто чем может !
  • 0

#2 barancev

barancev

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

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


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

Никак. Ядро Selenium работает на JavaScript, а JavaScript ничего не знает про вкладки. Нет там такого понятия. Работайте с несколькими окнами или может быть даже запускайте несколько экземпляров браузера (если надо заходить в другой аккаунт).
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#3 mosketrem

mosketrem

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

  • Members
  • Pip
  • 68 сообщений
  • ФИО:Дмитрий


Отправлено 10 февраля 2011 - 08:54

К сожалению я не знаю как работать с несколькими окнами. Не могли бы объяснить ?

Пробовал
<tr>
	<td>openWindow</td>
	<td>http://gmail.com/</td>
	<td>GMail</td>
</tr>
<tr>
	<td>selectWindow</td>
	<td>GMail</td>
	<td></td>
</tr>
Но это у меня ен работает. Открывается новая вкладка, а на вторую команду получаю сообщение [error] Could not find window with title GMail

Нашел в настройках браузера, что у меня было указано открывать во вкладках новые окна. Видимо кастомная инсталяха ФФ попалась когда-то. Теперь открывает новые окна. Но ходить по этим окнам мне пока что все равно не получается
  • 0

#4 Mad Cat

Mad Cat

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

  • Members
  • PipPipPip
  • 222 сообщений
  • ФИО:Александр Балабанов
  • Город:Киев

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

Selenium требует точного совпадения заголовка окна для selectWindow, узнать его можно с помощью GetAllWindowTitles. И заголовок окна появляется не мгновенно, т.е. скорее всего нужно будет подождать (например, с помощью WaitForCondition) и потом уже выбирать нужное окно.
  • 0

#5 mosketrem

mosketrem

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

  • Members
  • Pip
  • 68 сообщений
  • ФИО:Дмитрий


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

Selenium требует точного совпадения заголовка окна для selectWindow, узнать его можно с помощью GetAllWindowTitles. И заголовок окна появляется не мгновенно, т.е. скорее всего нужно будет подождать (например, с помощью WaitForCondition) и потом уже выбирать нужное окно.

Это в IDE можно использовать ? Кажется GetAllWindowTitles в IDE нет...

P.S.
Кое-что наваял в питоне для RC. Попросил колегу проверить работает ли у нее при дефолтных настройках браузера ? Хочу быть уверенным в переносимости
  • 0

#6 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


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

Это в IDE можно использовать ? Кажется GetAllWindowTitles в IDE нет...


Все верно, там нет такой команды, в IDE есть команда storeAllWindowTitles,
В IDE проще всего пользоваться комбинацией waitForPopUp, selectPopUP, selectWindow (NULL)
  • 1

#7 Mad Cat

Mad Cat

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

  • Members
  • PipPipPip
  • 222 сообщений
  • ФИО:Александр Балабанов
  • Город:Киев

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

Да, по поводу IDE я ошибся, давно его уже не видел.
  • 0

#8 mosketrem

mosketrem

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

  • Members
  • Pip
  • 68 сообщений
  • ФИО:Дмитрий


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

В общем пришлось писать в Selenium RC, чего я хотел избежать. Правда тест постоянно падает в совершенно разных местах, по совсем непонятным причинам. Например, мне нужно было в gmail создавать письмо, а потом на этом письме проверять синхронизацию проверяемого сайта с gmail. Весь день письмо нормально отправлялось, и я решал другие проблемы. Теперь скрипт не может кликнуть по кнопке в gmail "Создать письмо", хоть ты тресни ему ! И непонятно в чем дело. Локатор правильный, весь день работало нормально. А вот к концу дня перестала эта команда срабатывать
  • 0

#9 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 10 февраля 2011 - 18:25

В общем пришлось писать в Selenium RC, чего я хотел избежать. Правда тест постоянно падает в совершенно разных местах, по совсем непонятным причинам. Например, мне нужно было в gmail создавать письмо, а потом на этом письме проверять синхронизацию проверяемого сайта с gmail. Весь день письмо нормально отправлялось, и я решал другие проблемы. Теперь скрипт не может кликнуть по кнопке в gmail "Создать письмо", хоть ты тресни ему ! И непонятно в чем дело. Локатор правильный, весь день работало нормально. А вот к концу дня перестала эта команда срабатывать


Кнопка в IFrame там, на него нужно переключаться. Это, считай, отдельное окно.
  • 0

#10 mosketrem

mosketrem

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

  • Members
  • Pip
  • 68 сообщений
  • ФИО:Дмитрий


Отправлено 10 февраля 2011 - 20:37

Кнопка в IFrame там, на него нужно переключаться. Это, считай, отдельное окно.

Пробовал selectFrame. Но что-то никакой реакции. Правда я опять в IDE пробовал... может надо было через RC сразу ?..
  • 0

#11 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 11 февраля 2011 - 07:08

Пробовал selectFrame. Но что-то никакой реакции. Правда я опять в IDE пробовал... может надо было через RC сразу ?..


Не стоит из пушек по воробьям. Если в планах не стоит создание тучи автоматизированных тестов, то IDE хватит за милую душу.
Попробуйте в IDE так:

selectFrame
| canvas_frame
clickAt | css=div.nM>div.n3>div>div
  • 0

#12 mosketrem

mosketrem

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

  • Members
  • Pip
  • 68 сообщений
  • ФИО:Дмитрий


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

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

#13 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 11 февраля 2011 - 09:17

ну, как я и написал вчера, selectFrame никаких изменений в поведение теста не вносит. Сегодня кнопка "Создать письмо" нажимается (ну, один раз не нажалась). А вот кликать по звездочке сегодня селениум отказывается, без выдачи каких-либо ошибок. Говорит "я кликнул", а звездочка возле письма остается неизмененной. Вот такие дела....


*facepalm*

Если хотите получить совет\помощт\etc. полностью описывайте проблему, прилагая код теста, код страницы, лог.
  • 0

#14 mosketrem

mosketrem

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

  • Members
  • Pip
  • 68 сообщений
  • ФИО:Дмитрий


Отправлено 14 февраля 2011 - 11:15

Selenium RC + Python
sel.open("/")
    sel.wait_for_page_to_load("30000")
    time.sleep(3)
    sel.type("login-f_email", login)
    sel.type("login-f_password", pass)
    sel.click("login_loginButton")
    
    sel.open_window("http://gmail.com/", "GMail")
    time.sleep(3)
    sel.select_window("GMail")
    sel.type("Email", g_login2)
    sel.type("Passwd", g_pass2)
    sel.click("signIn")
    sel.wait_for_page_to_load("60000")
    time.sleep(5)
    #sel.click_at("//div[@id=':co']/div[1]/div", "")
    #sel.click("//div[text()='Compose mail']")
    sel.select_frame("canvas_frame")
    sel.click_at("//div[text()='Compose mail']", "")
    time.sleep(5)
    sel.type("//textarea[@name='to']", "dmitriytestovich7@gmail.com")
    rndm_var = sel.get_eval("(((1171*Math.random())*0x1113+Math.random()*0x100)|0)")
    sel.type("//input[@name='subject']", "test_" + rndm_var)
    sel.click_at("//div/b[text()='Send']", "")
    unitTestCase.failUnless(re.search(r"^Send this message without text in the body[\s\S]$", sel.get_confirmation()))
    time.sleep(30)
    
    sel.select_window("null")
    ...
    
    sel.select_window("GMail")
    time.sleep(1)
    sel.click("link=Sign out")
    time.sleep(3)
    sel.type("Email", g_login1)
    sel.type("Passwd", g_pass1)
    sel.click("signIn")
    sel.wait_for_page_to_load("30000")
    time.sleep(5)
    # go to 'Starred'
    sel.click("link=Starred")
    time.sleep(4)
    try: unitTestCase.assertEqual("test_" + rndm_var, sel.get_text("//table/tbody/tr/td[5]/div/div/div[2]/span/b"))
    except AssertionError, e: unitTestCase.verificationErrors.append("There is no your mail in starred: " + str(e))
    time.sleep(5)
    sel.select_frame("canvas_frame")
    sel.click_at("//tr[td/div/div/div/span/b[text()='test_" + rndm_var + "']]/td[2]/img", "")   # вот эта операция сейчас не отрабатывается
    
    sel.select_window("null")
    sel.click("link=Starred")
    time.sleep(5)
    ...

  • 0

#15 popo_kid

popo_kid

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

  • Members
  • PipPip
  • 79 сообщений

Отправлено 14 февраля 2011 - 14:05

time.sleep(5)
такие вещи крайне не кошерны, вместо них лучше использовать waitForElementPressent, waitForCondition и т.п.
Иначе вы постоянно будете натыкаться на плавающие баги, то успел, то неуспел. Либо выставите огромные тайм-ауты, что повлечет за собой увеличение времени выполнения.
  • 0

#16 mosketrem

mosketrem

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

  • Members
  • Pip
  • 68 сообщений
  • ФИО:Дмитрий


Отправлено 14 февраля 2011 - 15:31

вы правы, просто так как бы проще, когда спешишь...
  • 0

#17 George.Ivanov

George.Ivanov

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

  • Members
  • Pip
  • 31 сообщений
  • ФИО:Иванов Георгий
  • Город:Omsk


Отправлено 14 февраля 2011 - 18:20

Есть такая пословица: "Я не такой богатый, чтобы покупать дешевые вещи."
Не ужели не возникало проблем с небрежно написанными тестами?
Ещё, кстати, говорят, что к важнейшим качествам тестировщика относятся педантичность и аккуратность.
  • 0

#18 horhe

horhe

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

  • Members
  • PipPip
  • 100 сообщений
  • ФИО:Юрко
  • Город:Kraków

Отправлено 16 февраля 2011 - 15:15

"Я не такой богатый, чтобы покупать дешевые вещи."

это не пословица.) это Рокфеллер подобное говорил
  • 0
Piobaireachd isn't mysterious, difficult or hard - it's just music...

#19 mosketrem

mosketrem

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

  • Members
  • Pip
  • 68 сообщений
  • ФИО:Дмитрий


Отправлено 17 февраля 2011 - 20:38

Спасибо конечно за замечания к стилю, но все же почему у меня не получается анстаррить письмо в гмейле ?
  • 0

#20 George.Ivanov

George.Ivanov

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

  • Members
  • Pip
  • 31 сообщений
  • ФИО:Иванов Георгий
  • Город:Omsk


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

Если прям очень нужно, и нету комплексов по поводу красоты кода, то можно попробовать клик по координатам.
  • 0


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

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