在Selenium中获取“ Nosuch element Exception”尽管XPATH是正确的由于Shadow DOM,不确定这是什么请确认

问题描述

我正在尝试使用Selenium自动化Salesforce应用程序并获得NoSuchelementException,尽管XPATH对于特定对象是正确且有效的。当我搜索问题时,可能是Shadow DOM的原因。

对于EX:

所以我写的XAPTH

driver.findElement(By.xpath("//input[@name='Name']")).sendKeys("Jams");

driver.findElement(By.xpath("//input[@id='input-299']")).sendKeys("Jams");

此XPATH也在控制台中突出显示。但是在自动执行时,不会引发任何此类错误。

因此,在检查ShadowDOM选项时,正在为Name Object获得这样的选项。

#shadow-root(user-agent)

Shadowroot DIV

-div中未提及。它只是打开和关闭标签。

如何自动执行此操作?

解决方法

您可以检查Dom中是否有iframe。只需在页面开发人员模式(F12)>元素选项卡>搜索(Ctrf + F)区域中执行//iframe。如果有的话,您将获得iframe的数量。

现在,如果您的文本框位于任何iframe中,请使用下面的代码先进入特定的iframe

driver.switch_to.frame("<name or Id of frame>")

然后在下面列出使用方法:

driver.switch_to.parent_frame()

此外,如果该问题与框架无关,请在下面检查与阴影根相关的问题:

您可以在下面检查是否有阴影根元素(问题是Java的,但您可以共同关联):

How to interact with the elements within #shadow-root (open) while Clearing Browsing Data of Chrome Browser using cssSelector

,

现在大多数使用javascript创建网站内容。您可能需要等待某些元素加载后才能对其进行任何操作。

https://seleniumbyexamples.github.io/wait

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...