我正在尝试在某个网页上填写我的用户名和密码,然后按“登录”按钮,全部通过Powershell自动填写。
问题是我在html源代码中找不到登录按钮的ID。
我试过使用命令:
$link = $ie.Document.getElementsByTagName('A') | where-object {$_.innerText -match 'sign in'}
但这也没有奏效。
如果我想按“登录”按钮,PS命令要使用的任何想法?
HTML代码如下:
<div class="login">
<div class="content">
<div class="subsection-1">Sign in or create a <a id="ctl00_HeaderUserControl_LoginUserControl_hypNewAccount" href="/authentication/registerprovider.aspx?">new account</a></div>
<div class="subsection-2">
<span class="navy bold">What is your email address?</span>
<div class="indent">
<span class="bold">Email:</span>
<input id="loginEmail" class="text-box" type="text" maxlength="100" tabindex="1" />
<img class="ajax-loader" src="/content/images/research/global/transparent.gif" alt="" />
</div>
<div class="invalid-email"></div>
</div>
<div class="subsection-3">
<span class="navy bold">Do you know your password?</span>
<div>
<input id="passwordNotKnown" name="passwordSwitch" type="radio" checked="checked" />
<label for="noPassword">No, I don't know my password or I'm new .</label>
</div>
<div>
<input id="passwordKnown" name="passwordSwitch" type="radio" />
<label for="noPassword">Yes, my password is:</label>
<input id="loginPassword" class="text-box" type="password" maxlength="50" tabindex="2" />
</div>
<div class="invalid-password"></div>
<div class="error"></div>
</div>
<div class="subsection-4">
<button type="button" class="login-button greenButton" tabindex="4">Sign in</button>
<a href="javascript:void(0);" class="cancel-link">Cancel</a>
<input id="stayLoggedIn" type="checkbox" tabindex="3" />
<label for="stayLoggedIn">Stay signed in</label>
</div>
</div>
<div class="reset-password">
<div class="subsection-1">Would you like to reset your password?</div>
<div class="subsection-2">Choosing <span class="bold">yes</span> will reset your password and email a temporary password to: <span class="repeat-email"></span></div>
<div class="subsection-3">
<div class="center">
<button class="reset-password-button" type="button">Yes</button>
<button class="do-not-reset-password-button" type="button">No</button>
</div>
</div>
</div>
</div>
答案 0 :(得分:2)
正如@ Jamie-Taylor所提到的,登录按钮实际上是一个按钮。
您不仅可以通过ID访问它,还可以使用document.documentElement.getElementsByClassName
访问类名。请注意,此函数将返回元素列表,因为页面上的多个元素可以具有相同的类。
修改强>
我错了:为了getElementsByClassName
你必须在document.documentElement
而不是document
答案 1 :(得分:2)
我来到这里寻找类似的答案并想出如何完成这项工作。在此发布任何未来的搜索者。如Szymon所述,getElementsByClassName
返回一个数组,您需要在点击之前选择所需的项目。在我的情况下,类名是button
,我可以使用以下命令单击它:
$submitButton = $doc.documentElement.getElementsByClassName('button') | Select-Object -First 1
$submitButton.click()
这对我有用,因为只有一个项目带有classname按钮,所以如果你有多个具有相同名称的结果,我的结果会有所不同。如果需要,只需使用select-object更改您所获取的内容。