gpt4 book ai didi

java - 如何使用页面工厂和 Selenium 来初始化函数

转载 作者:行者123 更新时间:2023-12-02 10:46:53 25 4
gpt4 key购买 nike

我是一名学习者,而且是 Java 的绝对初学者。我正在学习创建一个自动化框架。我通过观看在线教程开始构建框架。但教程是用 C# 编写的,而我试图用 Java 构建它。所以,我被困住了,无法弄清楚我的代码出了什么问题。

这是我引用的 C# 代码:

 namespace DemoFramework
{
public static class Pages
{
private static T GetPage<T>() where T : new()
{
var page = new T();
PageFactory.InitElements(Browser.Driver, page);
return page;
}

public static AboutPage About
{
get { return GetPage<AboutPage>(); }
}

public static TopNavigationPage TopNavigation
{
get { return GetPage<TopNavigationPage>(); }
}
}

这是我正在编写的 Java 代码:

 public class Pages {

static WebDriver driver;

private static Pages GetPage() {
Pages page = new Pages();
PageFactory.initElements(driver,page);
return page;
}

public static AboutPage About {

return return GetPage<AboutPage>();

}
public static TopNavigationPage TopNavigationPage {

return Pages.GetPage<TopNavigationPage>();

}

你能帮我弄清楚如何解决这个问题吗?我不知道如何返回前任。关于页面。

 public static AboutPage About {

return GetPage<AboutPage>();

}

最佳答案

下面是 Java 中的基本页面对象的示例:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;

public class BasePageObject {

WebDriver driver;

public BasePageObject(WebDriver driver) {

this.driver = driver;
PageFactory.initElements(new AjaxElementLocatorFactory(driver, 15), this);

}

}

下面是特定页面对象的示例。 “帮助器”引用是我拥有的一组帮助器方法,并在我的原始基页对象中声明,但我在上面删除了,因为实现您的 Selenium 包装器方法不是我想要在此处展示的内容。只需知道辅助方法有助于通过异常处理和日志记录来包装 selenium 方法。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

public class MTSignOnPage extends BasePageObject {

public MTSignOnPage(WebDriver driver) {
super(driver);
}

@FindBy(xpath = "//img[contains(@src,'mast_signon')]")
WebElement pageHeader;
@FindBy(name = "userName")
WebElement userName;
@FindBy(name = "password")
WebElement password;
@FindBy(name = "login")
WebElement submit;

public boolean pageLoaded() {
return helper.isDisplayed(pageHeader);
}

public void setUserName(String name) {
helper.sendKeys(userName, name);
}

public void setPassword(String pword) {
helper.sendKeys(password, pword);
}

public void clickSubmit() {
helper.click(submit);
}

}

最后,是实现上述页面对象的代码片段:

以下代码使用 JUnit 和 JBehave (BDD)

MTHeaderPage mtHeader;

@Given("I am on the Mercury Tours home page")
public void givenIAmOnTheMercuryToursHomePage() {
driver.get("http://newtours.demoaut.com");
helper.waitForPageToLoad();
mtHeader = new MTHeaderPage(driver);
if (driver.getTitle().equalsIgnoreCase("Welcome: Mercury Tours"))
test.logGivenPass("I am on the Mercury Tours home page");
else {
test.logGivenFail("I am on the Mercury Tours home page",
"Current URL: " + driver.getCurrentUrl());
fail();
}
}

@When("I enter User Name <userName> and password <password>")
public void whenIEnterUserNameuserNameAndPasswordpassword(@Named("userName") String userName,
@Named("password") String password) {
helper.waitForPageToLoad();
mtHeader = new MTHeaderPage(driver);
mtHeader.setUserName(userName);
mtHeader.setPassword(password);
test.logWhenPass("I enter User Name " + userName + " and password " + password);
}

@When("I click the sign-in link")
public void whenIClickTheSigninLink() {
mtHeader.clickSignIn();
test.logAndPass("I click the sign-in link");
}

关于java - 如何使用页面工厂和 Selenium 来初始化函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52480233/

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