Тест Selenium RC - IE выдает ошибку 403 в приложении Tomcat, корень Tomcat в порядке

Я новичок в Selenium RC, ранее использовал Selenium IDE и запускал тесты только в Firefox. Я пытаюсь запустить базовый тест с использованием Selenium RC через Eclipse; мой тест работает нормально в Firefox и в Safari теперь, когда я убил блокировщик всплывающих окон, но IE8 вызывает исключение SeleniumException, содержащее «XHR ERROR» с ответом 403:

com.thoughtworks.selenium.SeleniumException: XHR ERROR: URL = http://localhost:8080/pims Response_Code = 403 Error_Message = Forbidden
    at com.thoughtworks.selenium.HttpCommandProcessor.throwAssertionFailureExceptionOrError(HttpCommandProcessor.java:97)
    at com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java:91)
    at com.thoughtworks.selenium.DefaultSelenium.open(DefaultSelenium.java:335)
    at org.pimslims.seleniumtest.FirstTest.testNew(FirstTest.java:32)
    ...

Я могу выполнить аналогичный тест на http:///localhost:8080 (пробел между косыми чертами здесь, потому что SO думает, что я рассылаю спам), и все в порядке - я могу заставить IE открыть эту страницу Tomcat по умолчанию и щелкнуть ссылку. Только если я пытаюсь открыть свое приложение по адресу http://localhost:8080/pims, я вижу эту ошибку - и только в IE. Я могу открыть этот URL-адрес в IE, введя его в адресную строку.

Я был убежден, что это вызвано какой-то настройкой в ​​IE, но я перепробовал все, что мог придумать. http:///localhost:8080 находится в списке моих надежных сайтов, и я понизил безопасность этой зоны до минимума, разрешил все, что похоже на всплывающие окна и т. д. Если я попытаюсь добавить http://localhost:8080/ pims/ на надежные сайты, IE говорит, что он уже там.

Я также возился с настройками прокси, но безрезультатно, но, возможно, пропустил что-то очевидное.

Я пробовал запускать тест с *iexplore, *iehta и *iexploreproxy — все ведут себя одинаково.

Есть что-то, что я пропустил?

Для справки, вот мой тестовый пример - он работает как есть в Firefox, открывая индексную страницу приложения PIMS и щелкая ссылку:

public class FirstTest extends SeleneseTestCase {
    @Override
    public void setUp() throws Exception {
        this.setUp("http://localhost:8080/", "*firefox");
    }

    public void testNew() throws Exception {
        final Selenium s = this.selenium;
        s.open("/pims");
        s.click("logInOutLink");
        s.waitForPageToLoad("30000");
    }
}

Любая помощь приветствуется!


person Ed Daniel    schedule 11.05.2010    source источник


Ответы (2)


Это удивительно, и в этом есть ощущение «грязного взлома», но это может быть просто ответом.

Настройте тест так, чтобы он указывал на корень Tomcat:

this.setUp("http://localhost:8080/", "*iexplore");

и заставить Selenium-RC переходить к приложению через Tomcat Manager, а не открывать его напрямую.

/*
 * This works
 */
public void testFromRoot() throws Exception {
    final Selenium s = this.selenium;
    s.open("/");
    s.click("link=Tomcat Manager");
    s.waitForPageToLoad("30000");
    s.click("link=/pims");
    s.waitForPageToLoad("30000");
    s.click("link=User Help");
    s.waitForPageToLoad("30000");
    s.click("logInOutLink");
    s.waitForPageToLoad("30000");
}

/*
 * This doesn't
 */
public void testNew() throws Exception {
    final Selenium s = this.selenium;
    s.open("/pims"); // <<<<<<<<<<<<<< Test fails here with exception, 403 error
    s.click("link=User Help");
    s.waitForPageToLoad("30000");
    s.click("logInOutLink");
    s.waitForPageToLoad("30000");
}

Я продолжу заниматься этим, но это выглядит обнадеживающе. Если бы кто-то понял, почему это работает, я был бы намного увереннее, что это правильный ответ. Это также может работать из-за некоторой комбинации этого и собственных настроек безопасности IE (с которыми я возился всю неделю).

План Б — вернуться с IE8 к IE7 (я думаю, что в 8 будет более строгий междоменный контроль), но я надеюсь избежать этого.

person Ed Daniel    schedule 14.05.2010

Немного лучшее решение, которое не требует входа в Tomcat Manager:

s.open("/");
s.getEval("window.document.body.innerHTML='<a href=\"/pims\">Link to PIMS<\\/a>'");
s.click("link=Link to PIMS");

Это открывает корневую страницу Tomcat, заменяет все ее тело ссылкой на приложение и щелкает эту ссылку.

Это некрасиво, но это работает.

person Ed Daniel    schedule 17.05.2010