3 回答

TA貢獻1966條經驗 獲得超4個贊
當您使用@FindBy注釋時,您需要在使用之前初始化所有 Web 元素。
為類創建一個構造并使用如下所示進行HotelBookingTest初始化:PageFactory
import com.sun.javafx.PlatformUtil;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.ui.Select;
import org.testng.annotations.Test;
public class HotelBookingTest {
WebDriver driver;
@FindBy(xpath= "//*[@class='hotelApp ']")
public WebElement hotelLink;
public HotelBookingTest(WebDriver driver) {
PageFactory.initElements(driver, this);
}
@Test
public void shouldBeAbleToSearchForHotels() {
setDriverPath();
driver = new ChromeDriver();
new HotelBookingTest(driver);
driver.get("https://www.cleartrip.com/");
boolean hotelLinkDisplayed = hotelLink.isDisplayed();
hotelLink.click();
driver.quit();
}
}
PageFactory從相應的包中導入并static在`hotelLink.
我希望它有幫助...

TA貢獻1772條經驗 獲得超6個贊
對于@FindBy注釋,您需要在搜索 WebElement 之前實現它。
您可以以簡單的方式添加為您執行此操作的方法:
import com.sun.javafx.PlatformUtil;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.ui.Select;
import org.testng.annotations.Test;
import org.openqa.selenium.support.PageFactory;
public class HotelBookingTest {
WebDriver driver;
@FindBy(xpath= "//*[@class='hotelApp ']")
public static WebElement hotelLink;
@Test
public void shouldBeAbleToSearchForHotels() {
setDriverPath();
driver = new ChromeDriver();
HotelBookingTest.setPageObject(driver);
driver.get("https://www.cleartrip.com/");
boolean hotelLinkDisplayed = hotelLink.isDisplayed();
hotelLink.click();
driver.quit();
}
public static void setPageObject (WebDriver wd) {
PageFactory.initElements(wd, new HotelBookingTest ());
}
}

TA貢獻1856條經驗 獲得超17個贊
由于您使用的是 @FindBy 注釋,因此您必須在使用之前初始化元素。
您可以通過創建接受 WebDriver 類型作為參數的參數化構造函數來做到這一點。
PageFactory.initElements(driver, this);```
and call this constructor after opening the browser.
i.e after this line
```driver = new ChromeDriver();```
添加回答
舉報