Fitnesse wiki не может правильно вызвать метод селена

Я пытаюсь написать простой прибор, который открывает браузер и переходит на www.google.com. Когда я запускаю вики-страницу, она становится зеленой, но браузер никогда не открывается (я не думаю, что метод даже вызывается вики). Может кто-нибудь взглянуть на мой прибор и вики, чтобы увидеть, что я делаю не так? Спасибо заранее,

Вот вики -

 !|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 ответ

Решение

Вы получаете несколько хороших рекомендаций в виде комментариев - но чтобы ответить на ваш вопрос напрямую, для ColumnFixture старого стиля, который вы написали, метод "navigateToSite" действительно не будет вызываться.

Эти стили светильников больше не используются, предпочтительнее Slim, и ваш пример соответствия в его документации покажет вам, как использовать стиль Slim. Однако для фиксации столбца, как вы написали, если вы хотите, чтобы метод вызывался, он должен быть "?" следующее название метода в строке заголовка.

См. Основные документы для закрепления столбца: http://fitnesse.org/FitNesse.UserGuide.FixtureGallery.BasicFitFixtures.ColumnFixture

Вы неправильно используете осветитель колонки, хотя даже предоставили старый стиль. Шаблон закрепления столбца: "Вот серия столбцов, представляющих входные данные, теперь вот вызов метода, который я хочу сделать, чтобы получить выходные данные и проверить результат". Навигация по сайту не всегда соответствует этому шаблону. В старом стиле это, вероятно, будет подходить ActionFixture:

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

В более новом стиле Slim, подходящим для навигации и проверки того, где вы находитесь, будет таблица сценариев.

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

В целом, выполнение тестов WebDriver / Selenium с помощью вики стоит задуматься о том, является ли это вашим лучшим средством массовой информации. Fitnesse действительно разработан как инструмент для совместной работы по документированию и проверке бизнес-требований непосредственно на основе исходного кода.

Вот пример того, как сделать с ColumnFixture, хотя опять же ColumnFixture не совсем подходит:

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

java class:
public String url;

public void navigateToUrl() {
}

Вы можете вернуть "ОК", если он хорошо перемещается, или вернуть заголовок страницы вместо void, если хотите.

Другие вопросы по тегам