1

我正在尝试编写一个简单的夹具来打开浏览器并导航到 www.google.com。当我运行 wiki 页面时,它以全绿色通过,但浏览器永远不会打开(我认为该方法甚至不会被 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();
    }

}



}
4

1 回答 1

1

您会收到一些很好的建议作为评论 - 但要直接回答您的问题,对于您编写的旧式 ColumnFixture,确实不会调用“navigateToSite”方法。

这些样式的固定装置不再经常使用,首选 Slim,您在其文档中的 Fitnesse 实例将向您展示如何使用 Slim 样式。但是,对于您编写的列夹具,如果您想要调用一个方法,它需要是“?” 标题行中的方法名称。

请参阅柱夹具的基本文档:http: //fitnesse.org/FitNesse.UserGuide.FixtureGallery.BasicFitFixtures.ColumnFixture

您误用了柱式夹具,即使授予旧样式。Column 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 真正被设计成一个协作工具,用于直接针对源代码记录和验证业务需求。

这是一个如何使用 ColumnFixture 的示例,尽管 ColumnFixture 也不完全合适:

|url|navigateToUrl?|
|www.google.com| |

java class:
public String url;

public void navigateToUrl() {
}

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

于 2017-09-11T15:57:55.153 回答