Я захожу на старую веб-страницу с плохим сценарием и плохо идентифицированными элементами. До сих пор я мог получить доступ ко всем объектам, которые он мне дал. Но сейчас я застрял.
Когда я нажимаю эту кнопку, открывается диалоговое окно 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()
Заранее спасибо!