2016-01-08 2 views
0

У меня есть рабочий стол, который я пытаюсь «просматривать».Powershell invoke-webrequest прошлый вход

Совершено это с этим ...

$login = Invoke-WebRequest -Uri 'http://www.privateworksite.com' -SessionVariable GetIP 
$form = $login.Forms[0] 
$Form.Fields['ctl00$ContentPlaceHolder1$RadTextBox7']= "*******" <-- User ID goes here 
$Form.Fields['ctl00$ContentPlaceHolder1$RadButton1'] = "submit" <-- Submit button 
$afterfirstclick Invoke-WebRequest -Uri 'http://www.privateworksite.com' -WebSession $GetIP -Method POST -Body $form.Fields 

Теперь, когда я нахожусь на странице мне нужно нажать на новую кнопку, которая появляется. Я попытался добавить a -sessionvariable $ afterfirstclick, но я получаю ужасные строки PS Red, заявляя, что вы не можете иметь -WebSession и -SessionVariable вместе.

ADDED INFO: Так как я могу нажимать кнопку, которая производится в $ afterfirstclick? Это то, что у меня есть для кнопки после первого щелчка.

ctl00$ContentPlaceHolder1$RadGrid1$ctl00$ctl04$GECBtnExpandColumn <-- a new button to create 
a drop down table with the info I need. The table is not there prior to the 
clicking the button so I need to click this button. 

Я был во всем и всегда демо/пост о регистрации на сайте, но после того, как вы двигаетесь на сайте?

Я попытался прокормить $ afterfirstclick в -WebSession, bust ... Также попытался повторить все это со следующим полем, чтобы щелкнуть кнопку, и это просто приводит к новому сайту, а не к «продолжению» электрический ток.

Куда пойти отсюда?

О, и URL-адрес не изменяется, поэтому я не могу отправить URL-адрес VIA.

+0

'URL никогда не меняется, поэтому я не могу отправить URL-адрес VIA.« Поэтому использование Invoke-WebRequest вряд ли будет работать для этого. Он «звучит», как если бы нажатие кнопки выполняло некоторый javascript (возможно, вызов AJAX) или манипулирует DOM. То, что IWR дает вам, это HTML и DOM, но он не предоставляет возможности для выполнения JavaScript (например, браузер). Проверьте этот вопрос SO - http://stackoverflow.com/questions/516027/c-sharp-httpwebrequest-and-javascript –

+0

, вам может потребоваться проверить HTTP-запрос и построить его «вручную» –

+0

ctl00 $ ContentPlaceHolder1 $ RadGrid1 $ ctl00 $ ctl04 $ GECBtnExpandColumn <- новая кнопка для создания раскрывающегося списка с информацией, в которой я нуждаюсь. Перед тем, как нажать кнопку « », таблицы нет, поэтому мне нужно нажать эту кнопку. – reddragon72

ответ

2

ОК нашел решение! Мне нужно было подать $afterfirstclick в следующий invoke-webrequest. Мне так глупо, что это было не так очевидно.

Конечный результат ...

$url = "http://private.com" #<-- setup the URL 
$tool = Invoke-WebRequest -Uri 'http://private.com' -UseDefaultCredentials -SessionVariable fb #<--create the site in a variable 

write-host "1111111111111111" #<--just a marker to seperate the two requests so I can see the form.fields clearly 
$Form = $tool.Forms[0] #<--first invoke form.fields 
$Form.Fields #<--just printing them so I can see them 
$Form.Fields['ctl00$ContentPlaceHolder1$RadTextBox7']= "USERID" #<--entering USERID into the form 
$Form.Fields['ctl00$ContentPlaceHolder1$RadButton1'] = "submit" #<--clicking the submit button 

$mainPage = Invoke-WebRequest ("$url" + $Form.Action) -WebSession $fb -Body $Form.Fields -Method Post #<--create the new page by calling the page with the fields 
$mainPage.RawContent | out-file h:\response.html #<--sending it to a file so I can see the first page and second page side by side 

write-host "2222222222222222" #<--just a marker to seperate the two requests so I can see the form.fields clearly 
$Form2 = $mainPage.Forms[0] #<--pulling the new page form.fields NOTICE I am using the previous variable for the first invoke 
$Form2.Fields #<--printing fields to take a look at what needs to be included in the next round 
$Form2.Fields['ctl00$ContentPlaceHolder1$RadGrid1$ctl00$ctl04$GECBtnExpandColumn'] = "submit" #<--The newly generated button that needed to be clicked to continue 

$mainPage2 = Invoke-WebRequest ("$url" + $Form2.Action) -WebSession $fb -Body $Form2.Fields -Method Post -UseDefaultCredentials #<--OK BIG ONE!! First the form.field needs to be correct as well as using the original -websession!!! 
$mainPage2.RawContent | out-file h:\response1.html #<--output the second resulting page to compare 

Вы есть наблюдать, что второй запрос. Он должен использовать первый invoke для создания нового form.fields, но по-прежнему использовать оригинальную переменную -websession.

Не знаю, почему, но это работает таким образом, но я использовал это для другого сайта, чтобы углубиться в него, чтобы он был прочным, просто продолжайте повторять цепочку. Вы даже можете использовать петлю foreach со всеми известными form.fields.