按 ID 查找元素无法识别 - Selenium

Posted

技术标签:

【中文标题】按 ID 查找元素无法识别 - Selenium【英文标题】:Find element by ID not recognized - Selenium 【发布时间】:2020-01-22 19:48:54 【问题描述】:

我有一个关于硒的问题, 我尝试填写表格,输入文本的 id 为://input[@id='company']。 在 selenium 中,我收到有关此元素未找到的错误:

Sun Sep 22 18:13:27 IDT 2019:ERROR: no such element: Unable to locate element: "method":"id","selector":"//input[@id='company']"
  (Session info: chrome=76.0.3809.132)
  (Driver info: chromedriver=2.36.540470 (e522d04694c7ebea4ba8821272dbef4f9b818c91),platform=Windows NT 6.1.7601 SP1 x86_64)

这是页面元素

这是我的方法

public static void inputValueById(String input,String id)
    
        WebElement element = getWebElementByIdWithWaitToBeSeen(id);
        element.click();
        element.clear();
        element.sendKeys(input);
    

问题是 selenium 找不到元素,它在开发工具中找到它,如您所见

【问题讨论】:

您是否尝试过将程序设置为等待 10 秒?有时元素需要一些时间来加载。 什么是getWebElementByIdWithWaitToBeSeen 脚本失败的原因可能有两个。 1)您的脚本甚至可能在页面加载元素之前尝试定位该元素,或者 2)该元素可能存在于 iframe 中。 页面上有frame/iframe吗? 我尝试等待 22 秒,但仍然没有找到,即使我看到页面已加载。 getwebElementbyudwithwait - 它只是等到看到 id,然后等待 22 秒,仍然没有找到元素 【参考方案1】:

此错误消息...

Sun Sep 22 18:13:27 IDT 2019:ERROR: no such element: Unable to locate element: "method":"id","selector":"//input[@id='company']"
  (Session info: chrome=76.0.3809.132)
  (Driver info: chromedriver=2.36.540470 (e522d04694c7ebea4ba8821272dbef4f9b818c91),platform=Windows NT 6.1.7601 SP1 x86_64)

...暗示 ChromeDriver 无法找到所需的元素。

您需要注意以下几点:

你使用的Locator Strategy不是id,而是xpath 虽然您使用的是chrome=76.0,但chromedriver=2.36太旧了。

解决方案

对于 //input[@id='company']selector 值,将 method 更改为 "xpath"。 确保将 JDK 升级到当前级别 JDK 8u222。 确保将 Selenium 升级到当前级别 Version 3.141.59。 确保将 ChromeDriver 更新到当前的ChromeDriver v77.0 级别。 Chrome 已更新至当前 Chrome 版本 77.0 级别。 (根据ChromeDriver v77.0 release notes)

【讨论】:

以上是关于按 ID 查找元素无法识别 - Selenium的主要内容,如果未能解决你的问题,请参考以下文章

Selenium在python中按类名查找悬停按钮元素

Python Selenium查找随机生成的元素ID

Selenium UI自动化验证码:识别+输入

按文本查找元素并获取xpath - selenium webdriver junit

按属性查找元素

使用 selenium 函数按名称查找元素时元素不可交互,但在通过 xpath 方法使用查找元素时有效