Не удается набрать текст с селеном в contenteditable div, отображаемый в IE8 - PullRequest
2 голосов
/ 04 июня 2011

Я столкнулся со следующей проблемой при автоматизации сайта Sharepoint с использованием селена 1 в браузере IE8. Я не могу ввести в тег (поле выбора людей Sharepoint) Ниже приведен HTML-код:

 <td sizcache="10" sizset="0">    
       <div tabIndex="0"
                title="People Picker"
                class="ms-inputuserfield"
                id="ctl00_ctl00_pePeopleEditor_upLevelDiv"
                style="overflow-x: hidden; overflow-y: auto; background-color:window; width: 100%; height: 18px; color: windowtext;"
                contentEditable="true"
                onkeydown="return onKeyDownRw(this, 'ctl00_ctl00_pePeopleEditor',3, true, event);"
                onkeyup="return onKeyUpRw('ctl00_ctl00_pePeopleEditor');"
                onclick="onClickRw(true, true);"
                onblur="updateControlValue('ctl00_ctl00_pePeopleEditor')"
                ondragstart="canEvt(event);"
                oncopy="docopy();"
                onpaste="dopaste();"
                onfocusin="this._fFocus=1;saveOldEntities('ctl00_ctl00_pePeopleEditor_upLevelDiv')"
                onfocusout="this._fFocus=0;"
                name="upLevelDiv"
                AutoPostBack="0"
                onChange="updateControlValue('ctl00_ctl00_pePeopleEditor')"
       />

       <textarea
               name="ctl$ctl00$pePeopleEditor$downlevelTextBox"
               title="People Picker"
               class="ms-input" id="ctl00_ctl00_pePeopleEditor_downlevelTextBox"
               style="position: absolute; width: 100%; display: none; height:20px;"
               onkeydown="return onKeyDownRw(this, 'ctl00_ctl00_pePeopleEditor', 3,true, event);"
               onkeyup="onKeyUpRw('ctl00_ctl00_pePeopleEditor');"
               rows="1"
               cols="20"
               AutoPostBack="0"
       />
</td>

Я попытался поместить текст в это поле, используя функции селена, как показано ниже, но ни одна из них не сработала:

self.selenium.click(div_locator)
self.selenium.type_keys(div_locator, "string")
self.selenium.key_press(div_locator, "string")
self.selenium.key_press_native(65)
------------------------------------------------------------------------------------

self.selenium.fire_event(div_locator,"focus")
self.selenium.type_keys(div_locator, "string")
self.selenium.key_press(div_locator, "string")
self.selenium.key_press_native(65)
----------------------------------------------------------------------------------

self.selenium.click_at(div_locator,"") 
self.selenium.type_keys(div_locator, "string")
self.selenium.key_press(div_locator, "string")
self.selenium.key_press_native(65)
------------------------------------------------------------------------------------

self.selenium.click(textbox_locator)
self.selenium.type(textbox_locator, "string")
self.selenium.type_keys(textbox_locator, "string")
self.selenium.key_press(textbox_locator, "string")
self.selenium.key_press_native(65)
------------------------------------------------------------------------------------

self.selenium.fire_event(textbox_locator,"focus")
self.selenium.type(textbox_locator, "string")
self.selenium.type_keys(textbox_locator, "string")
self.selenium.key_press(textbox_locator, "string")
self.selenium.key_press_native(65
----------------------------------------------------------------------------------

self.selenium.set_cursor_position(textbox,-1)
self.selenium.key_press(textbox_locator,  "\\13")
self.selenium.key_press_native(10)
self.selenium.key_press_native(65)

Обратите внимание, что в FF и IE6 нет проблем с этим полем

Кто-нибудь знает, как обращаться с этим полем выбора людей Sharepoint?

Alek

1 Ответ

1 голос
/ 09 июня 2011

Я не нашел решения для своей проблемы, однако кажется, что это ограничение селена 1.

Согласно Дэвид Бернс один из способов преодоления этой проблемы - это использоватьSelenium 2. На самом деле я могу ввести это поле на IE8 с помощью Selenium 2. Дэвид также указал способ преодоления проблемы с тегами, где contenteditable имеет значение true:

Я начал перемещать свой ИнтернетExplorer Selenium Тестирует использование API WebDriver для тестирования компонента Editor нашего сайта.Это одна из самых сложных областей для автоматизации с Selenium 1, потому что она использует contentEditable в div.Мне удалось проверить это с помощью JavaScript API компонентов, чтобы внедрить HTML, а затем манипулировать им, а затем с помощью API снова вывести HTML и проверить, что он правильный.

Подводя итогЯ могу:

  • переключиться на Selenium 2 с Webdriver
  • использовать компоненты JavaScript API для внедрения оригинального HTML
...