Powershell:如果您不知道按钮ID,如何按网页上的按钮

时间:2013-08-06 12:30:59

标签: html dom button powershell web

我正在尝试在某个网页上填写我的用户名和密码,然后按“登录”按钮,全部通过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>

2 个答案:

答案 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更改您所获取的内容。