按 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的主要内容,如果未能解决你的问题,请参考以下文章