代码之家  ›  专栏  ›  技术社区  ›  snikt

Fitnesse wiki无法正确调用selenium方法

  •  1
  • snikt  · 技术社区  · 7 年前

    我正在尝试编写一个简单的夹具,打开浏览器并导航到www.google。通用域名格式。当我运行wiki页面时,它会以绿色通过,但浏览器从未打开(我认为该方法甚至不会被wiki调用)。有人能看看我的固定装置和维基,看看我做错了什么吗?首先非常感谢,

     !|SeleniumFitness|
      |URL                  |navigateToSite?|
      |http://www.google.com|               |
    

    运行后-

    !|SeleniumFitnesse| java.lang.NoSuchMethodError: org.openqa.selenium.remote.service.DriverCommandExecutor.<init>(Lorg/openqa/selenium/remote/service/DriverService;Ljava/util/Map;)V
     |URL |The instance decisionTable_4.setURL. does not exist|navigateToSite? 
     |http://www.google.com|!The instance decisionTable_4.navigateToSite. does not exist |
    

    这是固定装置-

    package FitNesseConcept.fitNesse;
    
    import java.util.Properties;
    
    import org.junit.BeforeClass;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.testng.annotations.BeforeMethod;
    
    //import com.google.common.base.Preconditions.*;
    //import com.google.common.collect.Lists;
    
    import fit.ColumnFixture;
    
    public class SeleniumFitnesse extends ColumnFixture {
    
    public static ChromeDriver driver = null;
    private String navigateToSite = "";
    public String URL = "";
    
    
    
        public SeleniumFitnesse() {
    
        Properties props = System.getProperties();
    
        props.setProperty("webdriver.chrome.driver", "/home/ninad/eclipse-workspace/chromedriver");
    
        driver = new ChromeDriver();
        }
    
    
    
    // SET-GET Methods
    
    public String getURL() {
        return URL;
    }
    
    public void setURL(String uRL) {
        URL = uRL;
    }
    
    public String getNavigateToSite() {
        return navigateToSite;
    }
    
    public void setNavigateToSite(String navigateToSite) {
        this.navigateToSite = navigateToSite;
    }
    
    // Navigate to URL
    
    public void navigateToSite() throws Throwable {
        System.out.println("Navigating to Website");
    
        try {
            driver.navigate().to(URL);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    
    }
    
    
    
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Jim Weaver    7 年前

    你得到了一些很好的建议作为评论——但为了直接回答你的问题,对于你所写的老式ColumnFixture,确实不会调用“navigateToSite”方法。

    柱夹具见基本文件: http://fitnesse.org/FitNesse.UserGuide.FixtureGallery.BasicFitFixtures.ColumnFixture

    你用错了立柱固定装置,即使是老式的。列fixture的模式是“这里是一系列表示输入的列,现在是我想要进行的方法调用,以获得输出和检查结果”。浏览网站通常不符合这种模式。在旧式fitnesse中,可能会使用ActionFixture:

    http://fitnesse.org/FitNesse.UserGuide.FixtureGallery.BasicFitFixtures.ActionFixture

    在较新的Slim样式中,场景表非常适合导航和检查您的位置。

    http://www.fitnesse.org/FitNesse.UserGuide.WritingAcceptanceTests.SliM.ScenarioTable

    一般来说,通过wiki进行WebDriver/Selenium测试是否是您的最佳媒体值得额外考虑。Fitnesse实际上是一个协作工具,用于直接对照源代码记录和验证业务需求。

    |url|navigateToUrl?|
    |www.google.com| |
    
    java class:
    public String url;
    
    public void navigateToUrl() {
    }
    

    如果导航正常,您可以返回“OK”,或者如果需要,可以返回页面标题而不是void。