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
Javascript 如何在网站中单击没有Id或名称的登录图像?_Javascript_Html_Vba - Fatal编程技术网

Javascript 如何在网站中单击没有Id或名称的登录图像?

Javascript 如何在网站中单击没有Id或名称的登录图像?,javascript,html,vba,Javascript,Html,Vba,我想写代码通过VBA自动登录网站 登录“按钮”实际上是一个“登录图像”,没有id或名称。我不知道如何使VBA在“登录图像”上执行“鼠标左键单击” 另外,我注意到当我将鼠标移到“登录图像”上时,左下角显示:\smcvdol\logon 希望这有帮助…我对javascript一无所知 给你: <TD align=right width="20%" height="21"><input type="image" src="../img/DL.jpg" width="63" heigh

我想写代码通过VBA自动登录网站

登录“按钮”实际上是一个“登录图像”,没有id或名称。我不知道如何使VBA在“登录图像”上执行“鼠标左键单击”

另外,我注意到当我将鼠标移到“登录图像”上时,左下角显示:
\smcvdol\logon

希望这有帮助…我对javascript一无所知

给你:

<TD align=right width="20%" height="21"><input type="image" src="../img/DL.jpg" width="63" height="22" border="0" onClick="javascript:submitform();" style="cursor: pointer;"></TD>

下面是submitform():


函数submitform(){
如果(FRM.authId.value=''){
警报(“请输入用户名!”);
FRM.authId.focus();
返回false;
}否则{
FRM.submit();
} 
} 
函数重置_text(){
document.getElementById('username').focus();
} 
这是我的代码,仍然缺少最后一步:(“##########我们公司无法访问该网站)

Sub宏1()
模糊的物体
设置ie=CreateObject(“InternetExplorer.Application”)
可见=真实
即“导航”http://10.90.15.247/smcvDolWeb/jsp/login.htm"
当ie.busy或ie.readystate 4时
温德
ie.Document.getElementById(“用户名”).Value=“admin”
ie.Document.getElementById(“密码”).Value=“1234”
端接头

任何帮助都将不胜感激。

因此这将循环浏览页面上的每个TD项目。一旦它击中一个具有相同src的,它将单击它

如果您不想每次都这样做,并且网页没有太大变化,您可以调试。打印cnt并执行ie.document.all.tags(“td”).item(cnt)。单击

让我知道这是否有效

                            Dim Cnt         As Variant
                        Dim oCell       As Object
                                Cnt = 0  '
                                With ie.Document.all
                                    For Each oCell In .tags("td")
                                        If oCell.src = "../img/DL.jpg" Then
                                            ocell.click
                                            ocell.fireevent("submit") 'aircode, might have to be moved.
                                            Exit For
                                        End If
                                        Cnt = Cnt + 1
                                        Next oCell
                                    End With
此外,如果您将“td”替换为“image”,可能会更快一些


您需要运行的javascript将是.firevent(“submit”),甚至可能是onchange

因此这将循环浏览页面上的每个TD项目。一旦它击中一个具有相同src的,它将单击它

如果您不想每次都这样做,并且网页没有太大变化,您可以调试。打印cnt并执行ie.document.all.tags(“td”).item(cnt)。单击

让我知道这是否有效

                            Dim Cnt         As Variant
                        Dim oCell       As Object
                                Cnt = 0  '
                                With ie.Document.all
                                    For Each oCell In .tags("td")
                                        If oCell.src = "../img/DL.jpg" Then
                                            ocell.click
                                            ocell.fireevent("submit") 'aircode, might have to be moved.
                                            Exit For
                                        End If
                                        Cnt = Cnt + 1
                                        Next oCell
                                    End With
此外,如果您将“td”替换为“image”,可能会更快一些



您需要运行的javascript将是.firevent(“submit”),甚至可能是onchange

按getElementsByTagName类型获取对象,然后循环获取正确的对象

按getElementsByTagName类型获取对象,然后循环获取正确的对象

我搜索了其他似乎与我相关的问题,但仍然感到困惑,因为有一些不同的问题。我看到答案中提到了“FireEvent(“click”)”,但这仍然不起作用。通过类型getElementsByTagNameTry FireEvent(“click”)获取对象您可以引用表单并提交它吗,这就是JS脚本所做的,如果您添加值,无需验证,只需调用form.submit()另外一部分我已经搜索了其他似乎与我有关的问题,但仍然很困惑,因为还有一些不同的问题。我在回答中看到了“FireEvent(“click”)”,但这仍然不起作用。通过键入getElementsByTagNameTry FireEvent(“click”)获取对象您可以引用表单并提交它吗,这就是JS脚本所做的,如果您添加值,无需验证,只需调用form.submit()the else partthx…'IE.Document.getElementsByTagName(“输入”)(3) 。单击“我尝试了这个,但它出错了”警告“元素没有这样的方法”。你确定它是正确的吗?假设(1)是开始用户名,(2)是密码。IE.Document.getElementsByTagName(“输入”)中有多少元素。哦。我明白了。这是以“输入”开头的第四个元素。我以C方式从0开始计数。使用您的局部变量窗口,例如一些基数0一些基数1thx…'IE.Document.getElementsByTagName(“输入”)(3)。单击“我尝试了这个,但它出错了”警告“元素没有这样的方法”。您确定它是正确的吗?假定(1)是开始用户名,(2)作为密码。IE.Document.getElementsByTagName(“输入”)中有多少个元素?噢..我明白了。这是第四个以“输入”开头的元素。我用C方式从0开始计数。使用你的局部变量窗口,比如某个基0某个基1Woh!它是标记(“td”)?我一直将它的标记名视为“输入”。(这一页永远不会改变,哪怕有一天,巨壁瀑布也会倒下。)它有用吗?我希望它有用,如果有用的话,扔给我,然后向上投票。这个网站是新手,正试图接管。但说真的,这个循环帮助我在页面上隔离了这么多疯狂隐藏的小元素。我曾经有一个唯一的目的是调试。打印页面上每个标记项目的属性。这是一个救命稻草。已经被升级了~但不能甚至在公开场合,我的名声还不够。我明天必须在办公室里试试。thx@grantpanda好的,如果您需要任何其他VBA/IE自动化帮助,请告诉我。这是我的生计。我已经尝试过,但没有成功。但仍然非常感谢。我最终使用“IE.document.getElementsByTagName”(“form”)(0)。提交:)解决了问题。哇!这是标记(“td”)?我一直认为它的标记名是“输入”(即使有一天GreatFrieWall掉下来,页面也不会改变)它有用吗?我希望它有用,如果有用的话,扔给我,然后向上投票。这个网站是新手,正试图接管。但说真的,这个循环帮助我在页面上隔离了这么多疯狂隐藏的小元素。我曾经有一个唯一的目的是调试。打印页面上每个标记项目的属性。这是一个救命稻草。已经被升级了~但不能甚至在公开场合,我的名声还不够。我明天必须在办公室里试试。thx@grantpanda好的,如果您需要任何其他VBA/IE自动化帮助,请告诉我。这是我的生计。我已经尝试过,但没有成功。但仍然非常感谢。我最终通过使用“IE.document.getElementsByTagName”(“form”)(0)解决了此问题。提交:)
                            Dim Cnt         As Variant
                        Dim oCell       As Object
                                Cnt = 0  '
                                With ie.Document.all
                                    For Each oCell In .tags("td")
                                        If oCell.src = "../img/DL.jpg" Then
                                            ocell.click
                                            ocell.fireevent("submit") 'aircode, might have to be moved.
                                            Exit For
                                        End If
                                        Cnt = Cnt + 1
                                        Next oCell
                                    End With