在 Selenium 中获取 "Nosuch element Exception" 虽然 XPATH 是正确的。不确定这是由于 Shadow DOM。请确认

Getting "Nosuch element Exception" in Selenium Though XPATH is correct. Not sure is this due to Shadow DOM. Please confirm

我正在尝试使用 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 也在控制台中突出显示。但是在自动化时它会抛出 nosuchelement 错误。

所以在检查 ShadowDOM 选项时,我得到了这样的名称对象选项。

#shadow-root(user-agent)

影根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()

此外, 如果问题与框架无关,请检查下面的 shadow-root 相关问题:

您可以在下面检查 shadow-root 元素(问题是针对 Java,但您可以 co-relate):

现在网站内容大部分是使用javascript创建的。在对其进行任何操作之前,您可能必须等待某些元素加载。

https://seleniumbyexamples.github.io/wait