0

我试图在某个网页上填写我的用户名和密码,然后按下“登录”按钮,所有这些都是通过 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>
4

2 回答 2

3

我来这里是为了寻找类似的答案,并想出了如何完成这项工作。在这里张贴任何未来的搜索者。正如 Szymon 所说,getElementsByClassName返回一个数组,您需要在单击之前选择所需的项目。就我而言,类名是button,我可以使用以下命令单击它:

$submitButton = $doc.documentElement.getElementsByClassName('button') | Select-Object -First 1
$submitButton.click() 

这对我有用,因为只有一个带有类名按钮的项目,所以如果您有多个具有相同名称的项目,您的结果会有所不同。如果需要,只需使用 select-object 更改您抓取的内容。

于 2014-06-16T21:42:55.780 回答
2

正如@Jamie-Taylor 提到的,登录按钮实际上是一个按钮。

您不仅可以通过 id 访问它,还可以使用document.documentElement.getElementsByClassName. 请注意,此函数将返回元素列表,因为页面上的多个元素可以具有相同的类。

编辑 我错了:为了让getElementsByClassName你必须调用它document.documentElement而不是document

于 2013-08-06T13:51:37.620 回答