C#Selenium Webdriver(Firefox)iFrame不允许通过sendKeys输入文本

时间:2016-04-07 10:56:35

标签: selenium iframe

我使用最新的Selenium Firefox(2.53.0) 以前的代码在执行以下代码时正在运行

1)通过Xpath iframe类找到iFrame

IWebElement detailFrame =      `Driver_Lib.Instance.FindElement(By.XPath("//iframe[@class='cke_wysiwyg_frame cke_reset']"));`

2)通过

切换到该帧
Driver_Lib.Instance.SwitchTo().Frame(detailFrame);

3)通过

在iFrame中找到p标签
IWebElement freeText = Driver_Lib.Instance.FindElement(By.TagName("p"));

4)将简单的字符串插入iframe文本框

freeText.SendKeys("this is some text");

5)通过

从iFrame切换回主内容窗口
Driver_Lib.Instance.SwitchTo().DefaultContent();

以下是应用程序的代码部分

<iframe class="cke_wysiwyg_frame cke_reset" frameborder="0" src="" style="width: 100%; height: 100%;" title="Rich Text Editor, ctl00_ctl00_MainContentPlaceHolder_PageContent_mlcEditor_CKEditor" aria-describedby="cke_61" tabindex="0" allowtransparency="true">
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<title data-cke-title="Rich Text Editor, ctl00_ctl00_MainContentPlaceHolder_PageContent_mlcEditor_CKEditor">Rich Text Editor, ctl00_ctl00_MainContentPlaceHolder_PageContent_mlcEditor_CKEditor</title>
<style data-cke-temp="1">
<link href="https://myUrl/contents.css" rel="stylesheet" type="text/css">
<style data-cke-temp="1">
</head>
<body class="cke_editable cke_editable_themed cke_contents_ltr cke_show_borders" contenteditable="true" spellcheck="false">
<p>

<br _moz_editor_bogus_node="TRUE">
</p>
</body>
</html>
</iframe>

我正在运行的测试很简单,打开该页面,插入一些文本,保存。

它不会将文本插入iFrame。我完全不知道为什么。

还有其他人发现过这个问题吗?

非常感谢

我删除了异常,这是一个redHerring。

iFrame无法输入文字

1 个答案:

答案 0 :(得分:0)

大家好我找到了解决方案:〜这里是发生了什么的总结:

1)iFrame由xPath定位。

2)使用的SwitchTo()方法将焦点放在IWebElement的detailFrame实例中

3)没有发生的事情是p标签无法定位,因为它包含在CSS Body Class中。

解决方案一直盯着我的脸!这么简单!!

我这样做了:

IWebElement detailFrame = Driver_Lib.Instance.FindElement(By.XPath("//iframe[@class='cke_wysiwyg_frame cke_reset']"));         

           Driver_Lib.Instance.SwitchTo().Frame(detailFrame);

           IWebElement freeText = Driver_Lib.Instance.FindElement(By.TagName("body"));             


           freeText.SendKeys("This is a free text question created by Automation Smoke Test");

            Driver_Lib.Instance.SwitchTo().DefaultContent(); 

如您所见,只需找到body标签的第一个实例!