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, если хотите.