我在页面上找不到元素(输入标签)

I can not find the element (input tag) on the page

我正在尝试输入用户名和密码以通过 VBA 登录我的银行帐户。我可以找到密码输入标签来输入密码,但根本找不到用户表单输入标签。我一个一个地尝试了以下方法,但是 none 的 Find 方法有效,并且没有我可以查找的此标签的其他属性

Dim Mybrowser As New WebDriver
Set Mybrowser = New WebDriver
Mybrowser.Start "chrome"
Mybrowser.Get "https://tbconline.ge/tbcrd/login?t=false"

Mybrowser.FindElementByName("loginUsername1633281403139").SendKeys ("test")
'or
'Mybrowser.FindElementByClass("fblock100 > .ng-valid").SendKeys ("test")
'or
'Mybrowser.FindElementByCss("css=.fblock100 > .ng-valid").SendKeys ("test")
'or
'Mybrowser.FindElementByXpath("//input[@name='loginUsername1633281403139']").SendKeys ("test")
'or
'Mybrowser.FindElementByName("loginPassword1633282058600")

我的代码有误吗?还是有时我们无法通过页面上的 find 方法找到某些元素,尽管它们存在于页面上?谢谢你的建议。

你用过的名字或CSS,看起来很脆弱,可能是后端框架生成的,所以每运行他们都会改变,请使用自定义和优化CSS 或来自下方的 Xpath。

请注意 CSSXPATH

更受欢迎

请将此css用于用户名

input[formcontrolname='username']

xpath

//input[@formcontrolname='username']

密码字段:

css

input[formcontrolname='password']

xpath

//input[@formcontrolname='password']

您可以从这里学习CSS

name 属性值 loginUsername1633281403139 似乎是动态的,所以总是使用一些静态属性来查找元素或编写可靠的 xpaths。请参阅以下不同的查找元素的方法。

用户名:

CSS : input[name*='loginUsername']

xPath#1 : //input[@formcontrolname='username']

xPath#2 : //input[starts-with(@name,'loginUsername')]

xPath#3 : //input[@ng-reflect-name='username']


密码:

CSS : input[name*='loginPassword']

xPath#1 : //input[@formcontrolname='password']

xPath#2 : //input[starts-with(@name,'loginPassword')]

xPath#3 : //input[@ng-reflect-name='password']

我建议您练习查找定位器。请仔细阅读此 tutorial 它会对您有所帮助。