Selenium RC(Python)只向pag上的一个tinymce控件发送文本

2024-09-27 21:26:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python(2.7)和Selenium RC(2.42.1)为包含多个tinymce控件(准确地说是2)的页面编写一些自动测试脚本。我最新使用的代码如下所示:

sel.focus( field_values[ id_value ] + "_ifr" )
sel.get_eval( "window.parent.tinyMCE.activeEditor.setContent('<p>" + 
               field_values[ test_data ] + "</p>');" )

到目前为止,这段代码对我来说运行良好,但是在最近的构建之后,当页面上有多个tinymce控件副本时,我遇到了一些问题。setContent()函数似乎总是希望将文本发送到第二个tinymce控件,而不管focus()设置为哪个ID。作为一个很好的警告,如果我缩小我的窗口框架,这样只有第一个tinymce控件在屏幕上可见,那么只有第一个tinymce控件会被发送任何文本。你知道吗

我现在的理论是,当我设置内容时,.activeEditor没有指向正确的tinymce控件。它似乎总是指向它在屏幕上看到的最后一个可见的tinymce,所以我试图找到一种方法来将焦点强制到适当的tinymce控件上。你知道吗

我的问题是,有没有更好的方法使用Python将焦点强制到正确的tinymce控件上?我试过用选择单击(“tinymce”)和选择类型键(“tinymce”,“”)设置了focus(),但它们似乎不起作用。你知道吗

我向开发团队确认没有对tinymce控件进行任何更改,并且一如既往地使用相同的Selenium RC版本。你知道吗

我不知道这是否有帮助,但是已经有人推动我们将自动化测试转移到C框架。我们遇到了与Python代码相同的问题,但我们提出了一个解决方案:

driver.SwitchTo().Frame(iWeb);

// This was added to ensure the tinymce control edit area has focus. This is necessary for pages that have multiple tinymce controls.
IWebElement body = driver.FindElement( By.TagName( "body" ) );
body.SendKeys( "" );

driver.Execute("window.parent.tinyMCE.activeEditor.setContent('" + Test_Data + "');");

driver.SwitchTo().DefaultContent();

我希望能够做同样的事情,但是使用Python代码。你知道吗


Tags: 代码fielddriverseleniumbody页面window控件
1条回答
网友
1楼 · 发布于 2024-09-27 21:26:57

我终于找到了无法再处理同一页上多个TinyMCE控件实例的原因。由于硬件问题,我最近不得不重建我的机器,在这个过程中,我将Firefox浏览器更新到了最新的ESR版本(24.7.0)。我回滚到v24.2.0,没有任何问题。看来一定有一个安全更新导致了我的自动代码的异常行为。我还在研究更新了什么,以及是否真的可以用最新版本的Firefox写多个TinyMCE。你知道吗

相关问题 更多 >

    热门问题