我正在使用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中的textBox中输入文本,但我无法处理ID或类,下面是输入的HTML:
有什么想法吗?
感谢您的帮助
答案 0 :(得分:0)
我还不能评论,所以这将是部分答案,部分评论。
根据您发布的内容,看起来您可能不在正确的iframe中,我们没有足够的网页代码来判断是否有其他iframe。
我还希望看到您用于向该字段写入文本的代码,您可能会遇到问题。
如果您没有,而您唯一的问题是选择器,请尝试以下操作。去获取firefox的开发者版本。在Firefox中导航到您的网页。检查要将文本写入的元素。进入检查屏幕后,会有一个可以在屏幕底部左右滚动的路径栏。检查一下,确认您提到的只有一个iframe,并且您在正确的iframe中。如果这是问题,你应该好好去,你的代码可以用于在帧之间切换。如果您在正确的iframe中,请尝试使用其他方法查找文本框的元素。通过使用cssselector我很难找到元素,这是最成功的。要获取元素的cssselector,请右键单击它,导航到复制,然后导航到cssselector。从那里你的代码应该是这样的(使用c#):
driver.FindElement(By.CssSelector("INSERT CSS SELECTOR HERE")).SendKeys("Text");
答案 1 :(得分:0)
根据您发布的内容,您可能不会使用正确的iframe
除了Haendler所说的内容:您可以使用 Selenium IDE 轻松检查:记录填写输入框,然后查看录制的脚本。
它是否包含selectFrame
和click
命令之前的任何type
语句?这将告诉您输入框的位置,并为您提供Webdriver代码的一些很好的提示。
有Selenium ide for Firefox,但专门用于测试帧/ iframe这个新的第三方selenium ide更准确地记录。