gpt4 book ai didi

java - 在我的测试类中使用 PageFactory POM 中的 WebElements

转载 作者:行者123 更新时间:2023-12-01 09:14:36 26 4
gpt4 key购买 nike

基本上,我想(从我的测试类)断言 WebElement 包含 text()。由于我的所有 WebElement 都在我的 page.class 中定义,因此我认为我必须将它们公开才能执行此操作。

我在网络驱动程序和元素方面遇到了一些问题,我认为这可能是因为多个测试类同时从页面类访问 WebElements。我的问题是:WebElements 必须是私有(private)的是否有原因?

代码示例:

我见过的所有 PageFactory 教程都说要将 WebElements 设为私有(private),例如

    @FindBy(xpath = "//*[@id='searchStringMain']")
private WebElement searchField;

但是要断言某个元素包含文本(来自另一个类),我必须这样定义它们:

    @FindBy(xpath = "(//*[contains (text(),'Hrs')])[2]")
public static WebElement yourLoggedTime;

最佳答案

考虑这个例子:

package org.openqa.selenium.example;

import org.openqa.selenium.By;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.WebElement;

public class GoogleSearchPage {
// The element is now looked up using the name attribute
@FindBy(how = How.NAME, using = "q")
private WebElement searchBox;


public void searchFor(String text) {
// We continue using the element just as before
searchBox.sendKeys(text);
searchBox.submit();
}
}

searchbox 是私有(private)的,但方法 searchFor 是公共(public)的。该测试将使用 searchFor 但从不使用 searchBox。

我通常将页面工厂 initElements 调用放在页面构造函数的最后一行。这使得所有公共(public)函数都可供测试使用。所以

package org.openqa.selenium.example;

import org.openqa.selenium.By;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.WebElement;

public class GoogleSearchPage {
public WebDriver driver;
// The element is now looked up using the name attribute
@FindBy(how = How.NAME, using = "q")
private WebElement searchBox;

public GoogleSearchPage(WebDriver driver) {
this.driver = driver
PageFactory.initElements(driver, this);
}


public void searchFor(String text) {
// We continue using the element just as before
searchBox.sendKeys(text);
searchBox.submit();
}
}

在您的测试中,您可以执行以下操作:

new GoogleSearchPage(webDriver).searchFor("Foo");

关于java - 在我的测试类中使用 PageFactory POM 中的 WebElements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40658205/

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