【问题标题】:Selenium iFrame input textSelenium iFrame 输入文本
【发布时间】:2018-03-22 03:20:28
【问题描述】:

我正在使用 Selenium 构建一个测试自动化,其中 html 位于 iFrame 中,我能够在线找到激活 iFrame 的代码行,单击链接,然后按下按钮,它们工作正常 -请参阅以下几行:

driver.SwitchTo().Frame("06634000000BVL6");
driver.FindElement(By.LinkText("Loan Details R1")).Click();
driver.FindElement(By.XPath("//button[contains(.,'Edit')]")).Click();

我需要在该 iFrame 的文本框中输入文本,但我无法处理 ID 或类,下面是输入的 HTML:

有什么想法吗?

感谢您的帮助

【问题讨论】:

  • 如果您无法在框架中访问 WebElement 意味着您不在框架中。如果您发布 iframe 的 html 代码,有人可以帮助您。你需要改变方式,如何切换到框架。如果您想检查天气是否在框架中,您只需尝试在控制台中打印页面源并检查代码中是否存在文本框。
  • 请澄清您的问题。我不确定为什么工作代码有用。我们需要更多关于不工作的描述,显示不工作的代码并解释它为什么不工作或错误消息。您引用了 IFRAME,但未在 HTML 中显示它。添加解决问题所需的详细信息。
  • 不幸的是,HTML 太大,无法放入文本框中

标签: java c# selenium selenium-webdriver selenium-ide


【解决方案1】:

我还不能发表评论,所以这将是部分答案,部分评论。

根据您发布的内容,您可能不在正确的 iframe 中,而且我们没有足够的网页代码来判断是否有额外的 iframe。

我还想查看您用于将文本写入字段的代码,您可能会遇到问题。

如果您不这样做并且您遇到的唯一问题是选择器,请尝试以下操作。去获取Firefox的开发者版本。在 Firefox 中导航到您的网页。检查要写入文本的元素。进入检查屏幕后,屏幕底部有一个可以左右滚动的路径栏。检查以确认只有您提到的一个 iframe,并且您在正确的 iframe 中。如果这是问题所在,那么您应该很高兴,您上面的代码可用于在帧之间切换。如果您在正确的 iframe 中,请尝试另一种方法来查找文本框的元素。通过使用 cssselector,我在很难找到元素方面取得了最大的成功。要获取元素的 cssselector,请右键单击它,导航到复制然后 cssselector。从那里你的代码应该看起来像这样(使用 c#):

driver.FindElement(By.CssSelector("INSERT CSS SELECTOR HERE")).SendKeys("Text");

【讨论】:

    猜你喜欢
    • 2018-04-19
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 2013-05-22
    • 1970-01-01
    相关资源
    最近更新 更多