问题描述
我正在尝试使用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的,但您可以共同关联):
,现在大多数使用javascript创建网站内容。您可能需要等待某些元素加载后才能对其进行任何操作。