Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html VBA单击IE中的登录按钮_Html_Vba_Excel_Internet Explorer - Fatal编程技术网

Html VBA单击IE中的登录按钮

Html VBA单击IE中的登录按钮,html,vba,excel,internet-explorer,Html,Vba,Excel,Internet Explorer,我不太熟悉从IE中获取元素,但我在直截了当的情况下取得了成功。我现在使用的网站让我很困惑 我正在启动一个站点并输入用户名和密码,然后我想单击“登录”按钮,但我找不到正确的方法来定位并单击该按钮,因为它没有ID 我在这个网站上看到过很多有类似问题的帖子,我试着按照这些帖子中的建议去做,但仍然无法让它发挥作用 我将分享我的代码和网站上的元素信息 Dim IEapp As InternetExplorerMedium Dim divClassLogin As Object Set IEapp = Ne

我不太熟悉从IE中获取元素,但我在直截了当的情况下取得了成功。我现在使用的网站让我很困惑

我正在启动一个站点并输入用户名和密码,然后我想单击“登录”按钮,但我找不到正确的方法来定位并单击该按钮,因为它没有ID

我在这个网站上看到过很多有类似问题的帖子,我试着按照这些帖子中的建议去做,但仍然无法让它发挥作用

我将分享我的代码和网站上的元素信息

Dim IEapp As InternetExplorerMedium
Dim divClassLogin As Object
Set IEapp = New InternetExplorerMedium

    With IEapp
        .Navigate "http://ctdayppv02/PVE.aspx"
        .Visible = True
        .AddressBar = 0
        .StatusBar = 0
        .Toolbar = 0
        .MenuBar = 0
        .Height = 700
        .Width = 950
    End With

    Do While IEapp.Busy: DoEvents: Loop
    Do Until IEapp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop

    IEapp.Document.all.Item("txtUserName").Value = "Name"
    IEapp.Document.all.Item("txtPassword").Value = "Pass"
    IEapp.Document.all.Item("btnLogin").Click
这是IE检查元素html

这是Chrome Inspect元素html

我在本网站上引用的帖子包括:

有人能帮我确定单击登录时应该查看的元素吗?我习惯于寻找一个ID或写着“提交”的东西,但我在这个网站上没有看到


提前谢谢。

因为我无法访问URL。我只是拿出我通常做的代码(没有测试),对我来说是最灵活的方式,尽管它相当长。请尝试:

Dim ee as Variant, htmldoc
Set htmldoc= IEapp.document
For each ee in htmldoc.getElementsByTagName("span")
   If ee.className = "dijitReset dijitInline dijitButtonNode" And InStr(ee.innerHTML, "btnLogin") > 0 Then 'not sure whether innerhtml or outerhtml you need tp check in your watches
      ee.Click: DoEvents: Sleep 1000
      ''or u can try this
      ee.FireEvent ("onclick"): DoEvents: Sleep 1000
      Exit For
    End If
 Next ee

我在html中也没有看到一个按钮,而且url似乎不可访问,至少是公开的。这是你文章中的实际URL吗?在任何情况下,右键单击Firefox或Chrome中的网页并选择Inspect元素,然后用该元素更新您的帖子html@Absinthe谢谢你看。首先,这是我代码中的实际URL。不确定您是否可以在公司内部网之外访问它。其次,我更新了我的帖子,加入了Chrome显示的内容。顶部突出显示的元素可以通过ieApp.document.querySelector(“span[widgetId=btnLogin]”选择。Click@QHarr谢谢你的反馈。我尝试了两个
ieApp.document.querySelector(“span[widgetId=btnLogin]”)。单击
ieApp.document.querySelector(“input[name=btnLogin]”)。单击
会得到相同的错误…
对象不支持此属性或方法
,因此可能我缺少了一些东西,然后这些就可以工作了。另外,对于这些图像,我感到抱歉。我以前没有使用过snippet工具,也不知道它的存在。在我声明64位的
Sleep
后,它确实起了作用。奇怪的是,这会让我登录到网站,但不会加载如果我手动登录通常会出现的主表单。然而,侧边栏导航仍然存在并且可以访问,因此我将在侧边栏中单击相应的链接并从那里开始。将此标记为已接受,因为它以某种方式让我登录,这是我的问题。非常感谢!很高兴知道这有助于解决您的问题!不客气。关于它指向其他页面,我不能解释太多,因为这取决于网站本身的互动事实上,它似乎正在加载正确的形式了。我想这是网页的暂时问题。无论哪种方式,我都会从侧边栏中选择正确的形式,以确保我在正确的位置。再次感谢。