首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查用户是否已经登录,如果是则跳过

检查用户是否已经登录,如果是则跳过
EN

Stack Overflow用户
提问于 2019-05-27 23:21:34
回答 2查看 505关注 0票数 1

我正在创建网页抓取代码登录到网站,并输入一些数据。在到达实际页面之前,需要登录表单。我的代码在这里工作,首先登录。但是,如果您已经登录,网站不会要求您登录。有没有办法检查是否需要登录?

下面是我的代码:

代码语言:javascript
复制
Sub ChechAutomate()
    Dim ie As New InternetExplorer, url As String, ws As Worksheet

    Set ws = ThisWorkbook.Sheets("Other Data")

    url = "https://infra.com/"

    With ie
        .Visible = True
        .Navigate2 url

        While .Busy Or .ReadyState < 4: DoEvents: Wend

        With .Document
            .querySelector("[name=userName]").Value = "username"
            .querySelector("[name=password]").Value = "password123"
            .querySelector("[type=submit]").Click

            'While .Busy Or .ReadyState < 4: DoEvents: Wend

            .querySelector("[id=companySearchKeyData]").Value = ws.Range("T24").Value
            .querySelector("[type=submit]").Click
        End With

    End With

End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-28 02:29:12

最简单的检查是使用querySelectorAll返回一个nodeList并检查它的长度。在With .document内部...

代码语言:javascript
复制
If .querySelectorAll("#login-bis-id-btn").length > 0 Then
    'present ....do login page stuff
Else
    'do other stuff
End If
票数 1
EN

Stack Overflow用户

发布于 2019-05-28 00:21:31

您可以创建一个条件语句来检查您所在的页面。在这种情况下,以下逻辑可能会有所帮助:

代码语言:javascript
复制
Sub ChechAutomate()
    Dim IE As New InternetExplorer, url As String, ws As Worksheet
    Dim Html As HTMLDocument, idCheck As Object

    Set ws = ThisWorkbook.Sheets("Other Data")

    url = "https://infra.com/"

    With IE
        .Visible = True
        .Navigate2 url
        While .Busy Or .readyState < 4: DoEvents: Wend
        Set Html = .document
    End With

    Set idCheck = Html.querySelector("#login-bis-id-btn")
    If Not idCheck Is Nothing Then
        Html.querySelector("[name=userName]").Value = "username"
        Html.querySelector("[name=password]").Value = "password123"
        Html.querySelector("[type=submit]").Click
        While IE.Busy Or IE.readyState < 4: DoEvents: Wend
    Else:
        Debug.Print "You are already logged-in"
    End If

    'I don't know the role of the following two lines, though

    Html.querySelector("[id=companySearchKeyData]").Value = ws.Range("T24").Value
    Html.querySelector("[type=submit]").Click
End Sub
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56328773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档