gpt4 book ai didi

java - Serenity...如何获取 Webdriver?

转载 作者:行者123 更新时间:2023-11-30 07:06:14 25 4
gpt4 key购买 nike

我刚刚使用 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 父类(super class)并发现了这个:

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 使用另一个父类(super class)中的 webdriver 变量。我需要声明什么语法才能访问这个“网络驱动程序”变量? 谢谢 知识虚无 =========================

JDelorean!

非常感谢您的帮助。这是代码..请您帮忙指出“驱动程序”有什么问题吗?

1 - 功能文件: 功能:亚马逊用户登录认证 场景:亚马逊用户登录认证 给定用户位于“主页”页面

2 - 步骤定义文件: 包com.XXXX.steps; 导入 net.thucydides.core.annotations.Steps; 导入 com.XXXX.steps.serenity.User; 导入 cucumber.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 - 测试运行器类 包 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 - 我无法捕获驱动程序的用户类。请注意,在此文件末尾,注释掉的行不起作用。另请注意,“driver”被设置为原始驱动程序“home.getDriver()”,但不知何故该值被传递给“driver”,但驱动程序“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();
}
}

最佳答案

PageObject 有一个 getDriver() 方法,如果您需要使用 WebDriver,则应该使用该方法。

我强烈建议您学习Serenity BDD's Manual如果您要使用该框架。您应该在那里找到大多数问题的答案。或者,检查Serenity BDD Users Group .

关于java - Serenity...如何获取 Webdriver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40076564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com