我在页面上找不到元素(输入标签)
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。
请注意 CSS
比 XPATH
更受欢迎
请将此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 它会对您有所帮助。
我正在尝试输入用户名和密码以通过 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。
请注意 CSS
比 XPATH
请将此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 它会对您有所帮助。