我刚刚使用 Serenity + cucumber + java + maven (> mvn archetype:generate -Dfilter net.serenity-bdd:serenity-cucumber) 创建了一个示例项目。
我可以看到它何时启动了一个 Firefox 浏览器并访问了这个网站:
@DefaultUrl("http://en.wiktionary.org/wiki/Wiktionary")
问题:从这一点开始,创建了一个“WebDriver 驱动程序”,但我如何获取/获取该“驱动程序”变量?我正在尝试使用 driver.getWindowHandle() 获取窗口 ID。
更新:声明如下:
@DefaultUrl("http://en.wiktionary.org/wiki/Wiktionary")
public class DictionaryPage extends PageObject {...}
我查找了 PageObject 超类,发现了这个:
public abstract class PageObject extends net.serenitybdd.core.pages.PageObject {
protected PageObject() {
super();
}
protected PageObject(WebDriver driver, Predicate<? super net.serenitybdd.core.pages.PageObject> callback) {
super(driver, callback);
}
public PageObject(WebDriver driver, int ajaxTimeout) {
super(driver, ajaxTimeout);
}
public PageObject(WebDriver driver) {
super(driver);
}
}
所以.. PageObject 使用来自另一个超类的 webdriver 变量。我需要声明什么语法才能访问这个“网络驱动程序”变量?谢谢知道-nada ==========================
杰德洛里安!
非常感谢你的帮助。这是代码..请您帮助tp指出“驱动程序”有什么问题吗?
1 - 功能文件:功能:亚马逊用户登录身份验证场景:亚马逊用户登录身份验证给定用户在“主页”页面上
2 - 步骤定义文件:package com.XXXX.steps;导入 net.thucydides.core.annotations.Steps;导入 com.XXXX.steps.serenity.User;进口黄瓜.api.java.en.Given;
class DefinitionSteps {
@Steps
User user;
@Given("^user is on the \"([^\"]*)\" page$")
public void user_is_on_the_Amazon_page(String pageName)throws Throwable{
user.is_on_the_page(pageName);
}
}
3 - Test Runner 类包 com.XXXX;
import cucumber.api.CucumberOptions;
import net.serenitybdd.cucumber.CucumberWithSerenity;
import org.junit.runner.RunWith;
@RunWith(CucumberWithSerenity.class)
@CucumberOptions(features="src/test/resources/features")
public class DefinitionTestSuite {
}
4 - 我无法捕获驱动程序的用户类。请注意,在此文件的末尾,注释掉的行是不起作用的行。另请注意,“驱动程序”被设置为原始驱动程序“home.getDriver()”,但不知何故,该值被传递给“驱动程序”,但驱动程序“home.getDriver()”工作正常。
package com.XXXX.steps.serenity;
import com.XXXX.pages.Home;
import net.thucydides.core.annotations.Step;
import net.thucydides.core.steps.ScenarioSteps;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
public class User extends ScenarioSteps{
Home home = new Home();
WebDriver driver = home.getDriver();
@Step
public void is_on_the_page(String pageName) throws Throwable {
home.open();
home.getDriver().findElement(By.xpath(home.homeElements.get("Hello. Sign in"))).click();
// driver.findElement(By.xpath(".//*[@id='nav-link-yourAccount']/span[1]")).click();
}
}