硒iFrame输入文本

问题描述:

我使用Selenium来构建一个测试自动化,其中的html是在一个iFrame中,我能够在网上找到代码行来激活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:

有什么想法?

感谢您的帮助

+0

如果您无法访问框架中的WebElement,则表示您不在框架中。如果你发布iframe的html代码,有人可以帮助你。你需要改变方式,你如何切换到框架。如果你想检查你是否在框架中的天气,你可以尝试在控制台上打印页面源代码,并检查你的文本框是否存在于代码中。 –

+0

请澄清你的问题。我不知道为什么工作代码是有用的。我们需要更多描述不工作的内容,显示不工作的代码并解释为什么它不工作或错误信息。您引用了IFRAME,但不会在HTML中显示它。添加解决问题所需的详细信息。 – JeffC

+0

HTML太大了,不适合放在文本框中 – Sam

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

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

我也想看看你用来写字的代码,你可能会遇到问题。

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

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

Based on what you have posted, it looks like you may not be in the correct iframe

除了什么Haendler说:你可以很容易地通过使用硒IDE在这个检查:记录填写输入框然后查看录制的脚本。

它是否包含clicktype命令之前的任何selectFrame语句?这会告诉你输入框在哪里,并为webdriver代码提供一些好的提示。

Selenium ide for Firefox,但专门用于测试帧/内嵌框架,这个新的第三方selenium ide记录更准确。

+0

感谢您的评论我已经安装了添加在铬上,并尝试过,这里是测试记录器HTML,我试图在这里存档的是把值 “我的文本在这里” 向下下面 – Sam

+0

selectFrame \t索引= 1 \t clickAndWait \t // * [@ ID = “ncSecondaryNavigation”]/NC-次级导航/ DIV/DIV/DIV [2]/NC-二次导航项[3] /一个/跨度\t 点击\t // * [@ ID = “j_id0:j_id2:j_id116:j_id117:j_id185”] /跨度/ DIV [3] /按钮\t 点击\t CSS = textarea.ng-pristine.ng-untouched.ng-有效.ng-scope.ng-empty.input-sm.form-control.nc-pristine.ng化有效需要\t //我所试图实现的是以下行// 型\t CSS = textarea的.ng-untouched.ng-valid.ng-scope.input-sm.form-control.ng-valid-required.ng-not-empty.ng-dirty.ng-valid-parse.nc-not-pristine \t My文本在这里 – Sam

+0

IDE *中的重放*工作吗?基于这个记录,以下应该在webdriver中工作(是吗?)'driver.switchto().frame(1)'然后'driver.FindElement(By.CSS(“\t css = textarea.ng-untouched ... “))。Click();'然后[sendkey](https://*.com/questions/16481418/how-to-type-in​​-textbox-using-selenium-webdriver-selenium-2-with-java )与文本。 –