我正在尝试:
我尝试使用VBA表单和模块。
我在网上找到了该代码,该代码似乎曾经可以通过我的凭据,但是我无法使其再次运行。
这些对象all.email
和all.password
是否可以在网页的源代码中作为ID找到?
HTMLDoc.all.Email.Value = "email@example.com"
HTMLDoc.all.Password.Value = "ex5566"
Dim HTMLDoc As HTMLDocument
Dim oBrowser As InternetExplorer
Sub Login_2_Website()
Dim oHTML_Element As IHTMLElement
Dim sURL As String
On Error GoTo Err_Clear
sURL = "example.com"
Set oBrowser = New InternetExplorer
oBrowser.Silent = True
oBrowser.timeout = 60
oBrowser.navigate sURL
oBrowser.Visible = True
Do
' Wait till the Browser is loaded
Loop Until oBrowser.readyState = READYSTATE_COMPLETE
Set HTMLDoc = oBrowser.Document
HTMLDoc.all.Email.Value = "email@example.com"
HTMLDoc.all.Password.Value = "ex5566"
For Each oHTML_Element In HTMLDoc.getElementsByTagName("input")
If oHTML_Element.Type = "submit" Then oHTML_Element.Click: Exit For
Next
' oBrowser.Refresh ' Refresh If Needed
Err_Clear:
If Err <> 0 Then
Err.Clear
Resume Next
End If
End Sub
答案 0 :(得分:0)
我认为您可以使用用于查找提交按钮的相同代码来查找电子邮件和密码元素。如果您知道这些元素的名称或ID(通过检查页面的html代码),则可以使用实例If oHTML_Element.Name = "password" then oHTML_Element.Value = "ex5566"
如果特定元素具有ID,您也可以使用oHTML_Element = document.getElementById("[id of element]")
oHTML_Element.Value = "password"
直接转到它们,如果它们没有ID,而只有一个名称,也可以这样做,但是您必须找到如果该名称被多次使用,则显示出来。
答案 1 :(得分:0)
Web开发人员可以根据需要命名其输入,按钮,表单,ID。该电子邮件可以命名为电子邮件,ID或用户名或XYZ,这就是为什么必须检查网站中的元素以便可以相应地构建代码的原因。让我们以推特为例。
QHeaderView* headerView = treeWidget->header();
headerView->resizeSection(COLUMN_INDEX, FIXEDSIZE); //Calculate the required size and do this for required columns.
标签是<input class="js-username-field email-input js-initial-focus" type="text" name="session[username_or_email]" autocomplete="on" value="" placeholder="Phone, email or username">
标签,类名为input
,上面没有ID,因此您不能使用js-username-field email-input js-initial-focus
,必须使用{{1} }或使用HTMLDoc.getElementByID
,但如果输入多于1个,则必须循环输入并正确检测到所需的输入。
比听起来容易,但是您必须具有HTML的一些基本知识。继续使用twitter,密码标签为:
HTMLDoc.getElementsByClassName
不同的类和不同的名称来区分两者。最后是登录/提交按钮:
HTMLDoc.getElementsByTagName
使用HTML元素的这3部分,您可以通过以下方式登录:
<input class="js-password-field" type="password" name="session[password]" placeholder="Password">
(0)是什么意思?在HTML中,可以有许多具有相同类名的标记,并且在调用getElementsByClassName时它们都在一个数组中,因为登录站点只有具有这些类名的1个标记,所以数组位置“ 0”是您所拥有的寻找。
同样,开发人员可以命名类,ID,他们想要的任何东西,因此您想检查网站以正确编写脚本。