首页 > 解决方案 > 未能找到该字段的元素 selenium 识别

问题描述

我在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")

在此处输入图像描述

标签: cssexcelvbaseleniumweb-scraping

解决方案


尝试以下切换到 iframe,然后获取元素。在所有浏览器中使用 id 会更快,理论上它是页面独有的。然后,我将向您展示一种使用 CSS 选择器的方法,该方法比在大多数浏览器和更高版本的 IE 中使用 FindElementByName 更快,因为它们针对 CSS 进行了优化。如果您想了解选择器速度,请在此处查看我的答案。您还可以通过索引切换到 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

推荐阅读