Ссылка на всплывающее окно в Windows Powershell - PullRequest
2 голосов
/ 25 марта 2011

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

$ie = new-object -com "InternetExplorer.Application"
$ie.navigate("http://localhost:4611")
$ie.visible = $true
$doc = $ie.document
$link = $doc.getElementByID('link')

Вот где я получаю ссылку на браузер и ссылку.Затем я нажимаю на ссылку:

$link.click()

, которая открывает новое окно с вещами, которые мне нужно проверить на нем.Как бы я получить ссылку на это новое окно?Технически это не дочернее окно первого.

Я пытался настроить щелчок ссылки на ссылку, подобную этой, но она не работает:

$test = new-object -com "InternetExplorer.Application"
$test = $link.click()

ОБНОВЛЕНИЕ: Вот функция JavaScriptopenwindow, которое вызывается для открытия окна

function openwindow(url, name) {
   if (typeof openwindow.winrefs == 'undefined') {
      openwindow.winrefs = {};
   }
   if (typeof openwindow.winrefs[name] == 'undefined' || openwindow.winrefs[name].closed) {
    openwindow.winrefs[name] = window.open(url, name, 'scrollbars=yes,menubar=no,height=515,width=700,resizable=no,toolbar=no,status=no');
   } else {
      openwindow.winrefs[name].focus();
   };
};

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

column.For(i => "<a href='" + link + i.id + "?status=new' target='pat" + i.id + "'id'enc' onclick='openwindow(this.href,this.target);return false'>

FINAL UPDATE: Я закончилдо этого немного по-другому.Я создал новый объект Internet Explorer, взял ссылку из ссылки, установил все параметры и переместился в окно с помощью powershell, как это делает javascript.

$ie2 = new-object -com "InternetExplorer"
$ie2.visible = $true
$ie2.menubar = $false
$ie2.height = 515
$ie2.width = 700
$ie2.resizable = $false
$link = $doc.getelementbyid('link')
$url = $link.href
$ie2.navigate($url)

Я хотел бы поблагодарить @scunliffe такза помощь в решении этой проблемы.

1 Ответ

1 голос
/ 25 марта 2011

в этом методе есть опечатка: $ doc.getElementByID ('link')

должно быть:

$doc.getElementById('link')
                  ^ lowercase d

Обновление:

Основываясь на последующем коде / комментариях ... вы сможете извлечь ссылку на окно примерно так:

$ie = new-object -com "InternetExplorer.Application"
$ie.navigate("http://localhost:4611")
$ie.visible = $true
$doc = $ie.document
$link = $doc.getElementById('link')
$link.click()

Ссылка имеет набор атрибутов назначения, который использует функция openwindowназначить имя всплывающему окну.

Сама функция openwindow хранит ссылку на всплывающее окно в свойстве winrefs, таким образом, теперь должно появиться окно ... (если мои ожидания от синтаксиса PowerShellв окне IE правильно.

$targetName = $link.target
$popupHandle = $ie.openwindow.winrefs[$targetName]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...