如何在 java selenium 中使用 PageObjects 和 @FindBy 执行 javascript 元素
How do you execute javascript element using PageObjects and @FindBy in java selenium
我正在创建页面对象以在站点中导航并重构散列在一起的 Java 项目。我有一段代码调用 JavaScript 按钮。但是,我不知道如何将其设置为使用 @FindBy
的页面对象格式
当前页面对象是:
public CustomerLogin(WebDriver driver) {
PageFactory.initElements(driver, this);
}
@FindBy(how = How.ID, using = "username")
private WebElement userName;
@FindBy(how = How.ID, using = "password")
private WebElement password;
@FindBy(how = How.XPATH, using = "//*[@id=\\"loginPage\\"]/div[2]/div/div/div[1]/form/div[3]/div/input[1]")
private WebElement login;
public void logIn(String userName, String password) {
this.userName.sendKeys(userName);
this.password.sendKeys(password);
}}
我无法进入的部分是:
WebElement element = webDriver.findElement(By.xpath("//*@id=\"loginPage\"]/div[2]/div/div/div[1]/form/div[3]/div/input[1]"));
JavascriptExecutor executor = (JavascriptExecutor) webDriver;
executor.executeScript("arguments[0].click();", element);
如果我将它放入测试脚本中,这会起作用,但无法弄清楚如何将其转换为页面对象版本。
在构造函数中初始化Javascript执行器
public class CustomerLogin{
WebDriver driver;
JavascriptExecutor executor;
public CustomerLogin(WebDriver driver) {
this.driver = driver;
this.executor = (JavascriptExecutor) this.driver;
PageFactory.initElements(driver, this);
}
@FindBy(xpath = "//*@id=\"loginPage\"]/div[2]/div/div/div[1]/form/div[3]/div/input[1]")
private WebElement loginButton
//method, for clicking loginButton with JS Executor
public void clickLoginButton() {
executor.executeScript("arguments[0].click();", loginButton);
}
}
我正在创建页面对象以在站点中导航并重构散列在一起的 Java 项目。我有一段代码调用 JavaScript 按钮。但是,我不知道如何将其设置为使用 @FindBy
当前页面对象是:
public CustomerLogin(WebDriver driver) {
PageFactory.initElements(driver, this);
}
@FindBy(how = How.ID, using = "username")
private WebElement userName;
@FindBy(how = How.ID, using = "password")
private WebElement password;
@FindBy(how = How.XPATH, using = "//*[@id=\\"loginPage\\"]/div[2]/div/div/div[1]/form/div[3]/div/input[1]")
private WebElement login;
public void logIn(String userName, String password) {
this.userName.sendKeys(userName);
this.password.sendKeys(password);
}}
我无法进入的部分是:
WebElement element = webDriver.findElement(By.xpath("//*@id=\"loginPage\"]/div[2]/div/div/div[1]/form/div[3]/div/input[1]"));
JavascriptExecutor executor = (JavascriptExecutor) webDriver;
executor.executeScript("arguments[0].click();", element);
如果我将它放入测试脚本中,这会起作用,但无法弄清楚如何将其转换为页面对象版本。
在构造函数中初始化Javascript执行器
public class CustomerLogin{
WebDriver driver;
JavascriptExecutor executor;
public CustomerLogin(WebDriver driver) {
this.driver = driver;
this.executor = (JavascriptExecutor) this.driver;
PageFactory.initElements(driver, this);
}
@FindBy(xpath = "//*@id=\"loginPage\"]/div[2]/div/div/div[1]/form/div[3]/div/input[1]")
private WebElement loginButton
//method, for clicking loginButton with JS Executor
public void clickLoginButton() {
executor.executeScript("arguments[0].click();", loginButton);
}
}