C# Selenium:在iframe下点击按钮

4

我在我的网站上有一个iframe模态框。我试图点击其中的按钮,但是我无法成功。以下是我的代码,请告诉我我错过了什么。

driver.SwitchTo().Frame(driver.FindElement(By.Id("iframeid='frame_name'"))); 
driver.FindElement(By.Id("sendReuqest")).Click();

期望结果:点击iframe中的按钮id为sendRequest

实际结果:未找到元素。

如有任何问题,请告知。


这里没有无关的问题吗? - user1413
我的意思是两个不同的问题:1)在框架内单击按钮 2)检查加载网格的总时间,这回答了你的问题吗?谢谢! - drets
1
两个问题都与Selenium自动化有关,我也将其作为我的问题标题添加了。我会删除一个问题,并在另一篇帖子中提出。谢谢! - user1413
Coolawesome,同时请解释“无法这样做”。您有任何例外吗?如果有,请在问题中包含它。 - drets
我更新了我的描述。 - user1413
显示剩余3条评论
3个回答

1
尝试按照以下方式操作。让我们将frame_name ID命名为iframe_1。无论您的frame ID是什么,都可以替换iframe_1。此外,您有一个拼写错误(打字错误),它可能是sendRequest,因此我将其添加为按钮的ID。
driver.SwitchTo().Frame(driver.FindElement("iframe_1"))); 
driver.FindElement(By.Id("sendRequest")).Click();

希望它能够正常工作。请留下评论告诉我们。
祝好运。

是的,现在我能够点击那个按钮,但我面临另一个问题。步骤是打开那个框架,点击按钮,框架关闭,然后再点击另一个按钮。当在那个框架上点击按钮并关闭框架时,现在无法点击下一个按钮。 - user1413
我收到了这个错误:缓存中找不到元素 - 可能是页面在查找时已经发生了变化。 - user1413

0

看起来你正在尝试使用 By.Id(),但你应该使用 By.CssSelector()By.Id() 期望你传递一个与 HTML 中 ID 元素匹配的参数。

driver.SwitchTo().Frame(driver.FindElement(By.CssSelector("[iframeid='frame_name']"))); 
driver.FindElement(By.Id("sendReuqest")).Click();

1
sendRequest 也不像是一个有效的 ID。 - drets

0

试试这个:

driver.SwitchTo().Frame("frame_name"); 
driver.FindElement(By.Id("sendReuqest")).Click();

1
谢谢Leon,但是用户3542501发布的答案很有效,所以我会使用那个。感谢您的帮助。 - user1413

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接