Как открыть диалоговое окно на основе JavaScript на веб-странице с помощью Windows Powershell? - PullRequest
0 голосов
/ 29 марта 2019

Я захожу на старую веб-страницу с плохим сценарием и плохо идентифицированными элементами. До сих пор я мог получить доступ ко всем объектам, которые он мне дал. Но сейчас я застрял.

Когда я нажимаю эту кнопку, открывается диалоговое окно JavaScript, в котором пользователь должен вставить некоторые значения. И я просто нажимаю на это. Но когда открывается окно, я просто не могу сосредоточиться на нем.

Вот код, который его создает:

<INPUT onclick="javascript: openCosts(document.forms[0], 'COMPANY');" 
title="Include values" 
style="BORDER-LEFT-WIDTH: 1px; CURSOR: hand; FONT-SIZE: 11px; FONT-FAMILY: Tahoma; BORDER-RIGHT-WIDTH: 1px; 
BORDER-TOP-COLOR: #007041; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-COLOR: #007041; FONT-WEIGHT: bold; 
COLOR: #fff; PADDING-BOTTOM: 1px; BORDER-BOTTOM-COLOR: #007041; PADDING-TOP: 1px; PADDING-LEFT: 3px; 
BORDER-RIGHT-COLOR: #007041; PADDING-RIGHT: 3px; BORDER-TOP-WIDTH: 1px; BACKGROUND-COLOR: #0080ff" 
type=button value="Costs - SAP" name=btn_show_costs></INPUT>

Я пытался отправить TABS и ENTERS; пытался получить все открытые окна IExplorer - $ shell = New-Object -ComObject Shell.Application и Get-Process | Где-объект ... не работает.

Может кто-нибудь мне помочь ??

Это возобновленный код, до сих пор ...

$ie= new-object -ComObject "InternetExplorer.Application"
$ie.visible=$true
$ie.Navigate("an_local_asp_web_page.asp")

while($ie.ReadyState -ne 4) {start-sleep -m 100}

$ie.Document.getElementById("frame_principal").contentDocument.getElementById("cbb_profile")[2].selected = $true
$ie.Document.getElementById("frame_principal").contentDocument.getElementsByTagName("IMG")[1].click()

start-sleep -m 2000

$image = $ie.Document.getElementById("frame_principal").contentDocument.getElementsByTagName("IMG") | Where-Object { $_.href -like "*img_menu.gif*" }
$image.click() 

start-sleep -m 2000

$ie.Document.getElementById("frame_principal").contentDocument.getElementById("menu_vehicle").contentDocument.getElementsByTagName("IMG")[0].click()

start-sleep -m 1000

$ie.Document.getElementById("frame_principal").contentDocument.getElementById("frame_body").contentDocument.getElementsByName(“txt_user”)[0].value = "NICHOLAS"
$ie.Document.getElementById("frame_principal").contentDocument.getElementById("frame_body").contentDocument.getElementsByName(“rd_driver”)[0].Click()
$ie.Document.getElementById("frame_principal").contentDocument.getElementById("frame_body").contentDocument.getElementsByName(“btn_show_costs”)[0].Click() 

start-sleep -m 1000

# Now, that next part should work... But it doen't. It says 
# 'You cannot call a method on a null-valued expression.'
# I only see the IE Window that generates the Dialog Window... 
$app = New-Object -ComObject Shell.Application
$app.Windows()
$window = $app.Windows() | where {$_.LocationName -like "*show costs*"} 
$image = $window.Document.getElementsByTagName("IMG") | Where-Object { $_.href -like "*bt_add_cost.gif*" }
$image.click()

start-sleep -m 1000

$window.Document.getElementById("rate_cd_cbi").Value = "COSTCENTER"
$window.Document.getElementById("rate").Value = "100"
$window.Document.getElementById("btn_include").Click()

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...