2013-04-26 75 views
-1

我想用Struts2框架使用Selenium WebDriver API。所以它會被支持與否。是否硒的webdriver支持Struts 2的

如果沒有,那麼我該怎麼辦。

這意味着,假設我有我的jsptextfield,用行動類掛鉤,我想通過sendKeystextfield值上www.google.com搜索到元素「Q」。

什麼我試圖做的是

的index.jsp:

<s:form action="test"> 
<s:textfield name="search" label="Enter Search "></s:textfield> 
</s:form> 

</body> 

的struts.xml:

<action name="test" class="com.actions.TestAction"> 
      <result name="SUCCESS">/success.jsp</result> 
    </action> 

ActionClass:

package com.actions; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.htmlunit.HtmlUnitDriver; 

import com.opensymphony.xwork2.ActionSupport; 

public class TestAction extends ActionSupport 
{ 

    private String search; 

    public String getSearch() { 
     return search; 
    } 

    public void setSearch(String search) { 
     this.search = search; 
    } 


    private static final long serialVersionUID = -1241657564582564726L; 

    @Override 
    public String execute() throws Exception { 

     WebDriver driver = new HtmlUnitDriver(); 

     driver.get("http://www.google.com"); 

     WebElement element = driver.findElement(By.name("q")); 


     element.sendKeys(getSearch()); 

     element.submit(); 


     System.out.println("Page title is: " + driver.getTitle()); 


     System.out.println(driver.getPageSource());   

     driver.quit(); 
     return "SUCCESS"; 
    } 


} 

錯誤:

SEVERE: Exception starting filter struts2 
java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) 
    at java.lang.Class.getConstructor0(Unknown Source) 
    at java.lang.Class.getConstructor(Unknown Source) 
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyAction(XmlConfigurationProvider.java:428) 
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:378) 
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:495) 
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:286) 
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:112) 
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:234) 
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66) 
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:390) 
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:437) 
    at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:193) 
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:278) 
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:259) 
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:383) 
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:104) 
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 

熱切地等待您的答覆。 謝謝!

回答

1

直到有人帶有一個更好的答案沿...我從來沒有直接使用支柱,但我認爲我有什麼它做一個基本的想法。

硒對前端進行操作,隨着用戶會。我相信struts是一項僅支持後端的技術,這意味着瀏覽器甚至不知道它正在接收由struts組裝的東西。 Struts只是幫助服務器組裝html,css和javascript。

硒以及與HTML,JavaScript和CSS工作,並且因爲這就是你的服務器發送出去,這應該都是好的,就應該「支持」就好了!