未能找到该领域的元素,selenium认识到

问题描述 投票:0回答:1

我在这里尝试过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")

enter image description here

css excel vba selenium web-scraping
1个回答
1
投票

尝试以下操作切换到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
© www.soinside.com 2019 - 2024. All rights reserved.