我在这里尝试过FindElementByName
,看起来它应该识别这个名字,但我得到一个没有这样的元素错误......
我错过了什么?这是在Intacct.com网站上。根据ChroPath的说法,似乎不是我能找到的唯一CSS,而且相对的XPath是不存在的。还有另一种方法可以输入这个dang
<input id="filter" class="filter" type="text" name="F_RECORDID" value="" onkeypress="if (event.keyCode == 13) c('.rb','0');" ctype="text">
Sub newCSS()
Dim bot As New Selenium.WebDriver
bot.Start "Chrome", "https://www.intacct.com/ia/acct/login.phtml?_ga=2.13247287.1007588550.1536894830-1229002215.1536894830"
bot.get "/"
bot.FindElementByXPath("//span[@class='iamenutitle'][contains(text(),'Accounts Payable')]").Click
bot.FindElementByCss("[menuitemrefno='126']").Click
bot.SwitchToFrame .FindElementById("iamain")
尝试以下操作切换到iframe,然后获取元素。在所有浏览器中使用id更快,理论上它对于页面是唯一的。然后我向您展示一个使用CSS选择器的方法,它比在大多数浏览器和IE的更高版本中使用FindElementByName更快,因为它们针对CSS进行了优化。如果你想了解选择器速度,请参阅我的答案here。您也可以按索引切换到iframe。
Option Explicit
Public Sub test()
Dim driver As New ChromeDriver, ele As Object
Const URL = "URL"
With d
.Start "Chrome"
.get URL
'Other steps
.SwitchToFrame "iamain"
Set ele = .FindElementById("filter").SendKeys "123" '.FindElementByCss("[name='F_RECORDID']").SendKeys "123"
'OTHER CODE
.Quit
End With
End Sub