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

Фотография

Взаимодействие TC и Javascript


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

#1 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 19 октября 2010 - 09:43

Здравствуйте!
Помогите пожалуйста решить проблему. Проблема следующего плана: На странице присутствует ссылка, при клике на неё открывается новая страница браузера(я использую Fire Fox)в которой отображается картинка, как мне закрыть эту страницу?! Я пробовал использовать "Close", но он закрывает не окно с картинкой а окно на котором находилась ссылка.
Прошу ответить в ближайшее время.
Инструмент: Test Complete 7.20
  • 0

#2 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 19 октября 2010 - 12:57

У меня 7,52

Действительно, надо использовать функцию Close. Но надо закрывать закладку со открытой страницей, а не FireFox

Этот код закрывает закладку, в которой был открыт http://ya.ru/

Sub Test1
  Call Sys.Process("firefox").UIPage("chrome://browser/content/browser.xul").TabBand.TabButton("Яндекс").Close
End Sub

Для идентификации закладки воспользуйтесь finger'ом.
  • 0

#3 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 20 октября 2010 - 08:23

Здравствуйте.

Возможно, открывается не новая страница браузера, а отрисовывается плавающее окошко внутри старой страницы средствами JavaScript. В этом случае надо закрыть такое окошко предусмотренным приложением для этого способом - кликнуть на соответствующую кнопку, нажать Esc и т.п. Проще всего просто записать это действие.
  • 0
С уважением,
Дмитрий

#4 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 20 октября 2010 - 09:43

Здравствуйте.

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

Дмитрий, через запись получается следующий код:
function Test1()
{
  Aliases["firefox"]["wndMozillaUIWindowClass"]["Close"]();
}

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

#5 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 20 октября 2010 - 09:49


Здравствуйте.

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

Дмитрий, через запись получается следующий код:
function Test1()
{
  Aliases["firefox"]["wndMozillaUIWindowClass"]["Close"]();
}

Если запустить то закрывается не то что нужно.



2 Lemur:
Вы указали закрытие основного окна FF.
В своем посте я указал, что при помощи Finger'a надо определить закладку, в которой открыта новая страница, и закрывать именно закладку.

Если я ошибаюсь, пришлите скрин.
  • 0

#6 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 20 октября 2010 - 09:50

У меня 7,52

Действительно, надо использовать функцию Close. Но надо закрывать закладку со открытой страницей, а не FireFox

Этот код закрывает закладку, в которой был открыт http://ya.ru/

Sub Test1
  Call Sys.Process("firefox").UIPage("chrome://browser/content/browser.xul").TabBand.TabButton("Яндекс").Close
End Sub

Для идентификации закладки воспользуйтесь finger'ом.

Спасибо за совет, но там открывается именно новое окошко, а не вкладка. И при просмотре через Object Browser видно страницу на которой как раз и отображается эта картинка.
  • 0

#7 VitalyD

VitalyD

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

  • Members
  • PipPipPipPip
  • 285 сообщений
  • Город:Санкт-Петербург

Отправлено 20 октября 2010 - 10:00

Дмитрий, через запись получается следующий код:
function Test1() { Aliases["firefox"]["wndMozillaUIWindowClass"]["Close"](); }


Видимо во время записи некорректно мапяться объекты - т.е. мапирование происходит таким образом что оба окна (основное и всплывающие) кажутся TestCompletу одинаковыми...

Предалагаю вам вручную с помощью ObjectBrowser узнать адрес всплывающего окна, будет что то типа -
Sys.Process("firefox").Window("MozillaUIWindowClass", "Lenta.ru: Главное: - Mozilla Firefox", 1)

И вот узнав правильный адрес, именно его и закрывать:
Sys.Process("firefox").Window("MozillaUIWindowClass", "Lenta.ru: Главное: - Mozilla Firefox", 1).Close()

(Про работу с Object Browser можно прочитать введя в helpe "Object Browser panel")
  • 0

#8 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 20 октября 2010 - 10:07


У меня 7,52

Действительно, надо использовать функцию Close. Но надо закрывать закладку со открытой страницей, а не FireFox

Этот код закрывает закладку, в которой был открыт http://ya.ru/

Sub Test1
  Call Sys.Process("firefox").UIPage("chrome://browser/content/browser.xul").TabBand.TabButton("Яндекс").Close
End Sub

Для идентификации закладки воспользуйтесь finger'ом.

Спасибо за совет, но там открывается именно новое окошко, а не вкладка. И при просмотре через Object Browser видно страницу на которой как раз и отображается эта картинка.


Тогда все просто.

Открыты два firefox с одним линком http://ya.ru/

В ObjectBrowser присутствуют описатели двух окон.


Sys.Process("firefox").Window("MozillaUIWindowClass", "Яндекс - Mozilla Firefox", 2)
Sys.Process("firefox").Window("MozillaUIWindowClass", "Яндекс - Mozilla Firefox", 1)



Для закрытия окон используйте функцию Close
Например:

Set win1 = Sys.Process("firefox").Window("MozillaUIWindowClass", "Яндекс - Mozilla Firefox", 2)
call win1.close



Удач !
  • 0

#9 Paulitto

Paulitto

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

  • Members
  • Pip
  • 39 сообщений

Отправлено 20 октября 2010 - 10:19


У меня 7,52

Действительно, надо использовать функцию Close. Но надо закрывать закладку со открытой страницей, а не FireFox

Этот код закрывает закладку, в которой был открыт http://ya.ru/

Sub Test1
  Call Sys.Process("firefox").UIPage("chrome://browser/content/browser.xul").TabBand.TabButton("Яндекс").Close
End Sub

Для идентификации закладки воспользуйтесь finger'ом.

Спасибо за совет, но там открывается именно новое окошко, а не вкладка. И при просмотре через Object Browser видно страницу на которой как раз и отображается эта картинка.


Каждое вновь открытое окно браузера будет иметь новый индекс на единицу больше предыдущего:
UIPage("chrome://browser/content/browser.xul") - первое окно
UIPage("chrome://browser/content/browser.xul", 1) - второе
UIPage("chrome://browser/content/browser.xul", 2) - третье
итп

тоесть можно легко найти индекс нужного окна (хотябы посчитав их количество) и закрыть именно его
напр: UIPage("chrome://browser/content/browser.xul", 1).close()
  • 0

#10 K_O_T_rks

K_O_T_rks

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Константин

Отправлено 20 октября 2010 - 10:32

А еще лучше по определенным свойствам найти нужное вам окно функцией FindChild. - и тогда закрыть уже именно нужную вкладку))
  • 0

#11 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 20 октября 2010 - 10:52

Всем огромное спасибо за решение данной проблемы попробуем ВСЁ! может что нибудь подойдёт. :smile:
  • 0

#12 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 09 ноября 2010 - 07:58

Здравствуйте.

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

А можете указать еще способы закрытия такого окошечка? пробовал Esc и запись закрытия, но в первом случае не работает вообще,во втором не корректно.
  • 0

#13 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 09 ноября 2010 - 07:59



Здравствуйте.

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

Дмитрий, через запись получается следующий код:
function Test1()
{
  Aliases["firefox"]["wndMozillaUIWindowClass"]["Close"]();
}

Если запустить то закрывается не то что нужно.



2 Lemur:
Вы указали закрытие основного окна FF.
В своем посте я указал, что при помощи Finger'a надо определить закладку, в которой открыта новая страница, и закрывать именно закладку.

Если я ошибаюсь, пришлите скрин.

А можете дать безопасную ссылку на Finger ? и объяснить как он поможет?
  • 0

#14 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 22 ноября 2010 - 12:05

Здравствуйте.

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

#15 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 23 ноября 2010 - 12:59

Здравствуйте.

Правильно ли я понимаю, что при воспроизведении записанного теста (без изменения его руками), закрывается неправильное окно?

Да ! Вы совершенно правы.И как вы указывали ранее у меня действительно отрисовывается плавающее окошко внутри старой страницы средствами JavaScript и при записи закрытия этого окошка , закрывается главная страница. При повторном клике на отрисованое окошко происходит увеличение картинки. ESC не работает.(имеется ввиду что при клике на него никакой реакции не происходит). Как его закрыть понятия не имею.
  • 0

#16 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 23 ноября 2010 - 19:07


Здравствуйте.

Правильно ли я понимаю, что при воспроизведении записанного теста (без изменения его руками), закрывается неправильное окно?

Да ! Вы совершенно правы.И как вы указывали ранее у меня действительно отрисовывается плавающее окошко внутри старой страницы средствами JavaScript и при записи закрытия этого окошка , закрывается главная страница. При повторном клике на отрисованое окошко происходит увеличение картинки. ESC не работает.(имеется ввиду что при клике на него никакой реакции не происходит). Как его закрыть понятия не имею.


А у этого плавающего окошка есть метод Close ?
  • 0

#17 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 24 ноября 2010 - 13:45

А как это окошко закрыть руками?
  • 0
С уважением,
Дмитрий

#18 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 25 ноября 2010 - 08:19

Всем Спасибо за помощь! Я попробовал закрыть его комбинацией клавиш ALT+F4. И на удивление сработало. Теперь это надо реализовать в виде кода и всё :pilot:
  • 0


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

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