2013-03-01 198 views
2

即時嘗試選擇一個網站上的下拉菜單,但我完全失去了如何這樣做。我把它搞糊塗了,但找不到任何東西。這是林試圖做...Powershell ...從網頁選擇下拉菜單

連接到Web .. 然後從下拉菜單中 集數量 一個項目,然後添加到購物車 ............. ..........................................

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 

$objForm = New-Object System.Windows.Forms.Form 
$objForm.Text = "Web Link" 
$objForm.Size = New-Object System.Drawing.Size(300,150) 
$objForm.StartPosition = "CenterScreen" 
$objForm.KeyPreview = $True 
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") 
    {$tag=$objTextBox.Text;$objForm.Close()}}) 
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape") 
    {$objForm.Close()}}) 

$OKButton = New-Object System.Windows.Forms.Button 
$OKButton.Location = New-Object System.Drawing.Size(100,75) 
$OKButton.Size = New-Object System.Drawing.Size(75,23) 
$OKButton.Text = "OK" 
$OKButton.Add_Click({$WebSite=$objTextBox.Text;$objForm.Close()}) 
$OKButton.TabIndex=1 

$objForm.Controls.Add($OKButton) 
$objLabel = New-Object System.Windows.Forms.Label 
$objLabel.Location = New-Object System.Drawing.Size(10,20) 
$objLabel.Size = New-Object System.Drawing.Size(280,20) 
$objLabel.Text = "Enter Website Page:" 

$objForm.Controls.Add($objLabel) 

$objTextBox = New-Object System.Windows.Forms.TextBox 
$objTextBox.Location = New-Object System.Drawing.Size(10,40) 
$objTextBox.Size = New-Object System.Drawing.Size(260,20) 
$objTextBox.TabIndex = 0 

$objForm.Controls.Add($objTextBox) 
$objForm.Topmost = $True 

$objForm.Add_Shown({$objForm.Activate()}) 

[void] $objForm.ShowDialog() 

#Connect to Website 
$ie = new-object -com "InternetExplorer.Application" 
$ie.navigate("$WebSite") 
$ie.visible = $true 
    while ($ie.Busy -eq $true) {Start-Sleep -Milliseconds 1000; } 


i see this on the website, but i dont know hot to set the value or select the item. or is there easier way to 
do this when the webpage loads? 


#<select name="skuAndSize" class="size-dropdown mediumSelect footwear selectBox" style="display: none;"> 
     <option value=""></option> 
      <option name="skuId" value="2870325:7"> 7</option> 
      <option class="size-not-in-stock" name="skuId" value="2870326:7.5"> 7.5</option> 
      <option name="skuId" value="2870327:8"> 8</option> 
      <option class="size-not-in-stock" name="skuId" value="2870328:8.5"> 8.5</option> 
      <option name="skuId" value="2870329:9"> 9</option> 
      <option name="skuId" value="2870330:9.5"> 9.5</option> 
      <option name="skuId" value="2870331:10"> 10</option> 
      <option class="size-not-in-stock" name="skuId" value="2870332:10.5"> 10.5</option> 
      <option name="skuId" value="2870333:11"> 11</option> 
      <option class="size-not-in-stock" name="skuId" value="2870334:11.5"> 11.5</option> 
      <option name="skuId" value="2870335:12"> 12</option> 
      <option class="size-not-in-stock" name="skuId" value="2870336:12.5"> 12.5</option> 
      <option name="skuId" value="2870337:13"> 13</option> 
      <option class="size-not-in-stock" name="skuId" value="2870338:13.5"> 13.5</option> 
      <option name="skuId" value="2870339:14"> 14</option> 
      <option class="size-not-in-stock" name="skuId" value="2870340:15"> 15</option> 
      <option class="size-not-in-stock" name="skuId" value="2870341:16"> 16</option> 
      <option class="size-not-in-stock" name="skuId" value="2870342:17"> 17</option> 
      <option class="size-not-in-stock" name="skuId" value="2870343:18"> 18</option> 
     </select> 

#<span class="selectBox-label" data-qa="pdp.buyingtools.size-dropdown">(9.5)</span># 

回答

3

試試這個:

# will select item with label 9 
$dropdown = $ie.Document.getElementById("skuAndSize") 
($dropdown | where {$_.innerHTML -eq "9"}).Selected = $true 
0

找到一個更好的解決方案,將詳細的文字

選擇值

定義一個函數

applicationList是選擇標籤的ID

測試ABC是確切的文本匹配


function Subscription() 
{ 
$x = $IE.document.getElementById("applicationList"); 
for($i=0;$i -lt $x.length;$i++) 
{ 
If($x.options[$i].text -eq "test abc") 
{ 
return $i; 
}}} 

調用函數

$index=Subscription; 
$IE.Document.getElementById("applicationList").SelectedIndex=$index;