除非我检查元素,否则 C# Selenium 无法访问 iframe 中的元素

Posted

技术标签:

【中文标题】除非我检查元素,否则 C# Selenium 无法访问 iframe 中的元素【英文标题】:C# Selenium cannot access element inside iframe unless I inspect element 【发布时间】:2021-12-08 15:07:02 【问题描述】:

正如标题所说,我无法点击一个元素,我想知道为什么会这样。

我正在尝试通过 xpath 或 javascript 从 funcaptcha 中单击“验证”按钮。在仅检查 iframe 元素后,我可以在普通浏览器上执行此操作,所有内容都显示在源代码中。

网站:https://www.roblox.com/

当我在普通浏览器上手动检查元素时,我获得了所有必要的源代码,并且可以执行 javascript 代码来按下“验证”按钮。但是在 selenium c# 上,我无法让它工作。我尝试了很多不同的方法

website elements when inspecting element on my own browser

这是 C# 中的代码,它试图切换到 iframe 以执行所需的 javascript 以按“验证”请注意这两种解决方案(xpath 和 javascript)都不起作用。

c# code for switching to iframe and executing javascript to press verify (which fails)

this is what I'm trying to press "verify"

感谢任何帮助,因为我已经坚持了一段时间,让我无法展示我的项目想法

【问题讨论】:

【参考方案1】:

如果您将收到的错误消息包含在内,将会非常有帮助。

【讨论】:

你也可以使用隐式等待方法。 就像我说的,无法访问 iframe 中的元素。基本上与找不到元素时的错误相同。 c# 代码执行得很好,直到我尝试执行一些 javascript 来查找元素或 c# 本身来查找元素...请在您自己的浏览器上尝试操作,您会明白我的意思。我在许多网站上使用过 selenium 数千次,但从未到过这一点。在您的普通浏览器上,您可以检查元素并找到该元素,但在 chromedriver selenium 上,您不能无缘无故。

以上是关于除非我检查元素,否则 C# Selenium 无法访问 iframe 中的元素的主要内容,如果未能解决你的问题,请参考以下文章

如何错误处理 Selenium 无法单击元素,因为其他元素在 C# 中遮挡了它? [复制]

无法定位元素 - 使用selenium webdriver在不同的语言环境中自动化网站

Selenium WebDriver Java - 如何执行“如果存在,则单击,否则跳过”?

无法使用任何浏览器的selenium web-driver处理登录弹出窗口

Selenium C# Webdriver如何检测元素是不是可见

在构建期间检查剃刀错误