Как при запуске Selenium RC в браузере отключать использование JavaScr
#1
Отправлено 03 декабря 2008 - 14:36
#2
Отправлено 03 декабря 2008 - 15:49
Есть страничка содержащая визуальный редактор который невидит селениум , если в браузере отключить использование JavaScript то в место этого визуального редактора появляется текстовое поле. Как сделать чтобы при запуске Selenium RC а в браузере автоматически отключалась возможность использовать JavaScript.
Попробуйте всё же достучаться до поля редактора с использование Джаваскрипта и Селениума, например для релактора TinyMCE запись в его поле может выглядеть так:
String js = "document.getElementById('" + iframeID + "').contentWindow.document.getElementById('someID').innerHTML ='" + theText + "';";
selenium.runScript(js);
#3
Отправлено 03 декабря 2008 - 16:11
#4
Отправлено 03 декабря 2008 - 16:24
#5
Отправлено 04 декабря 2008 - 07:37
#6
Отправлено 04 декабря 2008 - 07:57
Этой ночью похоже никому :).Старнно, неужели никому неприходилось тестить визуальный редактор с помощью селениума
это уже хоть чтото , а где я могу об этом почитать ? был бы очень благодарен за ссылку
1. Гляньте ФаерБагом какая у Вашего редактора структура в ХТМЛ-е страницы. Я сталкивался с тем, что такие редакторы "живут" в собственном iframe, соответственно, чтобы получить доступ(записать/прочитать) к их содержимому использовался Джаваскрипт наподобие того что приводился выше.
2. Почитать наверное вот это:
runScript() и getEval()
Scripting Iframes - Tutorial and Examples
З.Ы.
Возможно если Вы дадите ссылку на страничку с этим редактором или покажете кусок кода страницы с ним будет чуть проще сказать, как именно Вам стоит делать.
#7
Отправлено 04 декабря 2008 - 08:19
редактор TinyMCE
#8
Отправлено 04 декабря 2008 - 09:05
спасиба за ссылки
редактор TinyMCE
В дополнение - пообщайтесь с разработчиком(и), можно же вызывать методы из API TinyMCE.
Одно из решений "в лоб" такое:
public void addTextInToTinyMCEField(String iframeID, String theText) { String js = "document.getElementById('" + iframeID + "').contentWindow.document.getElementById('tinymce').innerHTML ='" + theText + "';"; selenium.runScript(js); } public String getTextFromTinyMCEField(String iframeID) { String js = "window.document.getElementById('" + iframeID + "').contentWindow.document.getElementById('tinymce').innerHTML;"; return selenium.getEval(js); }iframeID - ID iframe-а TinyMCE
'tinymce' - у нас на страницах именно такой айдишник внутреннего body, у Вас может чуть быть другим, гляньте.
#9
Отправлено 04 декабря 2008 - 09:09
А отключить в селениуме js нельзя, он же сам javascript :)
#10
Отправлено 04 декабря 2008 - 09:47
я отключаю руками в браузере Java Script и все нормально , но проблема в том если я использую test suite то при запуске очередного скрипта нужно заново лезть в браузер и отключать. Вот я и хотел спросить как можн автоматом отключать.А еще можно использовать для этого что-нить более легкое вместо селениума - например, какой-нить jwebunit - ему не критичен включенный js. То есть для него использование js можно отключить вообще. С одной стороны это более идеологически правильно, а с другой стороны, он вместо нормального браузера запускает свой собственный эмулятор, что может и не устроить. Но зато тесты будут не в пример шустрее селениумовских.
А отключить в селениуме js нельзя, он же сам javascript :)
#11
Отправлено 04 декабря 2008 - 09:50
проблема в том что я незнаю Java Script , я использую python для написания скриптов. Может это можно както на питоне сделатьВ дополнение - пообщайтесь с разработчиком(и), можно же вызывать методы из API TinyMCE.
Одно из решений "в лоб" такое:public void addTextInToTinyMCEField(String iframeID, String theText) { String js = "document.getElementById('" + iframeID + "').contentWindow.document.getElementById('tinymce').innerHTML ='" + theText + "';"; selenium.runScript(js); } public String getTextFromTinyMCEField(String iframeID) { String js = "window.document.getElementById('" + iframeID + "').contentWindow.document.getElementById('tinymce').innerHTML;"; return selenium.getEval(js); }iframeID - ID iframe-а TinyMCE
'tinymce' - у нас на страницах именно такой айдишник внутреннего body, у Вас может чуть быть другим, гляньте.
#12
Отправлено 04 декабря 2008 - 10:08
#13
Отправлено 04 декабря 2008 - 10:12
Гм, собственно особого знания Джаваскрипта тут не требуется, подставьте свои айдишники в то, что писалось выше.проблема в том что я незнаю Java Script , я использую python для написания скриптов. Может это можно както на питоне сделать
Ну а уж аналог джававского selenium.runScript() в Питоне есть, думаю :). Или таки покажите куски кода страницы.
#14
Отправлено 04 декабря 2008 - 10:45
package com.example.tests;
import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;
public class NewTest extends SeleneseTestCase {
public void setUp() throws Exception {
setUp("http://testsite.com/", "*chrome");
}
public void testNew() throws Exception {
selenium.open("/");
selenium.click("link=Log in");
selenium.waitForPageToLoad("30000");
selenium.type("form-username", "test@gmail.com");
selenium.type("form-password", "password1");
selenium.click("form-submit");
selenium.waitForPageToLoad("30000");
selenium.click("link=My Blog");
selenium.waitForPageToLoad("30000");
selenium.click("link=Add Blog Post");
selenium.waitForPageToLoad("30000");
selenium.type("form.title", "test");
#здесь должен быть ввод текста
selenium.type("form.tags", "tags");
selenium.click("form.actions.save");
selenium.waitForPageToLoad("30000");
}
}
что здесь мне надо подправить ? и как запустить?
#15
Отправлено 04 декабря 2008 - 12:36
Вот я записал в IDE и импортировал в джаву
package com.example.tests;
...
что здесь мне надо подправить ? и как запустить?
Вы меня смущаете этим вопросом :). А как Вы запускали тесты до этого? Только из-под IDE?
Подробную инструкцию не дам, поищите по форуму ветки в духе "Как начать". Вкратце: оставьте джавовскую IDE (IntelljIdea или Eclipse), создайте там проект, подключите библиотеки (JUnit, Selenium java driver), создайте класс с тем кодом, что Вы привели,
замените
#здесь должен быть ввод текстана
String js = "document.getElementById('iframeID').contentWindow.document.getElementById('tinymce').innerHTML ='theText';"; selenium.runScript(js);iframeID и tinymce естественно должны быть Вашими айдишниками. Для запуска скачайте Selenium -RC server (и сервер и клиент.драйвер скачиваются вместе), почитайте какой командой стартовать сервер и запустите его. После этого - правая кнопка на имени тестового метода в Вашей среде разработки и ищите Run.
Запускать можно и через Ant/Maven.
З.Ы.
Повторюсь - если рядом есть разработчики, то смело берите ближайшего за горло и просите помочь. Пиво с вареньем если что потом ему поставите :).
#16
Отправлено 04 декабря 2008 - 14:38
С питоновскими тестами у меня проблем небыло просто в консольке запускаю селениум сервер в другой консольке например ...\test.py вот и все
#17
Отправлено 04 декабря 2008 - 15:00
огромное человеческое спасиба
С питоновскими тестами у меня проблем небыло просто в консольке запускаю селениум сервер в другой консольке например ...\test.py вот и все
Всё же я Вас не совсем понял, если уже есть тесты на Питоне - преобразуйте "String js = "document.getElementById('iframeID').contentWindow.document.getElementById('tinymce').innerHTML ='theText';"; selenium.runScript(js);" в запись на Питоне, вставляйте в Ваши тесты и получайте удовольствие. Я, к сожалению, с синтаксисом Питона незнаком, так что прямо с ходу не преобразую.
#18
Отправлено 09 декабря 2008 - 16:42
не читал что писали но отключить можно в браузере, а потом запустить сервер с нужным профайлом браузера. Вот так например java -jar selenium-server.jar -firefoxProfileTemplate c:\myprofile\отключить использование JavaScript
#19
Отправлено 09 декабря 2008 - 17:12
не читал что писали но отключить можно в браузере, а потом запустить сервер с нужным профайлом браузера. Вот так например java -jar selenium-server.jar -firefoxProfileTemplate c:\myprofile\отключить использование JavaScript
То что надо
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных