【发布时间】:2016-03-19 06:03:42
【问题描述】:
我正在为工作做一些自动化操作,现在我正在尝试通过我们的店面自动进行购买,该购买应该进入贝宝沙盒并完成购买。一切看起来都不错,我知道一般流程有效,但是当我到达第一个 PayPal 页面时,我无法找到 webElements。
流程的 PayPal 端包含 2 个页面。一个输入登录信息,另一个确认购买。第二页运行良好,但当我告诉它查找电子邮件/密码字段和登录按钮时,第一页总是给我“无法找到元素”。如果让驱动程序出于调试目的打印出当前 URL,它会正确打印 payPal URL,因此它正在查看正确的站点。我还尝试延迟 30 秒以确保这不是时间问题并且我遇到了同样的问题。
这是有问题的类文件:
public class PayPalLoginPage extends AbstractPaymentPage {
//AbstractPaymentPage extends from AbrstractPageObject
private WebElement email; //Element ID is email
private WebElement password; //Element ID is password
@FindBy(id = "btnLogin")
private WebElement loginButton;
public PayPalLoginPage(WebDriver driver) {
super(driver);
PageFactory.initElements(driver, this);
}
public PayPalPurchaseConfirmationPage login (PayPalInfo payPalInfo) {
email.sendKeys(payPalInfo.getEmail());
password.sendKeys(payPalInfo.getPassword());
loginButton.click();
this.waitForPayPalLoadingCurtainToDisappear();
return new PayPalPurchaseConfirmationPage(this.getDriver());
}
我调用这个类的方式是这样的:
case PAYPAL_PURCHASE:
setDriver(new PayPalLoginPage(getDriver()).login(getPaymentMethod()).confirmPayPalPurchase());
break;
因此,流程一直运行良好,直到它到达第一个 payPal 页面,它只是停止说它找不到这 3 个元素中的任何一个。如果我将它设置为只是在那里等待并手动填写信息,那么它会在下一页上直接获取并从它们开始工作(在第二个 payPal 页面上找到所有元素并对其进行操作)。
如果我将 findElement.By 行放在登录方法中,我会得到相同的行为,并且无论我是尝试使用 id、name、xpath 还是 css 来查找它们,都会得到相同的结果。
知道我可能会错过什么吗?
【问题讨论】: