3

im trying to select a drop down menu on a website but im completely lost on how to do so. i googled the hell out of it but no luck on finding anything. this is what im trying to do..

connect to the web.. select a item from the drop down menu set quantity then add to cart ........................................................

[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>#

2 Answers 2

5

Try this:

# will select item with label 9
$dropdown = $ie.Document.getElementById("skuAndSize")
($dropdown | where {$_.innerHTML -eq "9"}).Selected = $true
Sign up to request clarification or add additional context in comments.

Comments

0

Found a better solution which will select the value with exact text

Define a function

applicationList is the id of the select tag

test abc is the exact text to match


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;
}}}

Call the Function

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.