2010-05-11 31 views
0

我是新来硒RC 403错误,此前使用硒IDE和只在Firefox上运行的测试。我试图通过Eclipse使用Selenium RC进行基本测试;我测试在Firefox现在工作正常,并且在Safari中,我已经杀了弹出窗口拦截器,但IE8是造成SeleniumException被抛出,包含“XHR ERROR”一个403回应:硒RC测试 - IE给出了Tomcat的应用程序,Tomcat的根OK

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(这里斜杠之间的空格,因为我认为我是垃圾邮件)进行类似的测试,这很好 - 我可以让IE打开Tomcat默认页面并单击链接。只有当我尝试在http://localhost:8080/pims打开我的应用程序时才会看到此错误 - 并且仅在IE中。我可以在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"); 
    } 
} 

任何帮助,不胜感激!

回答

0

稍微好一点的解决方案,不涉及登录到Tomcat管理器:

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

这将打开Tomcat的根页面,并链接到该应用程序替换其整个身体,并点击该链接。

它的丑陋,但它的工作原理。

1

这是令人惊讶的,并且具有“肮脏的劈”的感觉,但它可能只是答案。

设置测试了在Tomcat的根指向:

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

使硒-RC通过Tomcat管理器浏览到应用程序,而不是直接打开它。

/* 
* 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自己的安全设置的结合(我一直在搞这个星期)。

B计划是从IE8退到IE7(我在考虑更严格的跨域控制8),但我希望避免这种情况。