Javascript Selenium:无法在PayPal登录页上找到元素
我目前正在使用页面对象来表示PayPal登录页面(),以实现自动化,无论我做什么,我似乎都无法单击页面上的登录按钮。Javascript Selenium:无法在PayPal登录页上找到元素,javascript,java,selenium,paypal,automation,Javascript,Java,Selenium,Paypal,Automation,我目前正在使用页面对象来表示PayPal登录页面(),以实现自动化,无论我做什么,我似乎都无法单击页面上的登录按钮。 以下是页面的外观: 以下是PayPal登录页面的当前页面对象表示: public class PayPalLoginPage extends DesktopPage { private static final Logger LOG = LoggerFactory.getLogger(PayPalLoginPage.class); @FindBy(id = "e
以下是页面的外观: 以下是PayPal登录页面的当前页面对象表示:
public class PayPalLoginPage extends DesktopPage {
private static final Logger LOG = LoggerFactory.getLogger(PayPalLoginPage.class);
@FindBy(id = "email")
private WebElement emailInput;
@FindBy(id = "password")
private WebElement passwordInput;
@FindBy(id = "btnLogin")
private WebElement loginButton;
public PayPalLoginPage(BuildWebDriver driver, Wait<WebDriver> wait) {
super(driver, wait);
}
public void setEmail(String email) {
LOG.debug("Setting email: " + email);
setTextWithJavascript(emailInput, email);
}
public void setPassword(String password) {
LOG.debug("Setting password: " + password);
setTextWithJavascript(passwordInput, password);
}
public PayPalPaymentsPage clickLoginButton() {
LOG.debug("Clicking 'Log In' Button.");
clickWithJavascript(loginButton);
return new PayPalPaymentsPage(driver, wait);
}
}
公共类PayPalLoginPage扩展了Desktop{
私有静态最终记录器LOG=LoggerFactory.getLogger(PayPalLoginPage.class);
@FindBy(id=“电子邮件”)
私有网络元素输入;
@FindBy(id=“密码”)
私有WebElement密码输入;
@FindBy(id=“btnLogin”)
私有WebElement登录按钮;
公共PayPalLoginPage(BuildWebDriver驱动程序,等待){
超级(司机,等等);
}
公用电子邮件(字符串电子邮件){
LOG.debug(“设置电子邮件:+电子邮件”);
setTextWithJavascript(emailInput,电子邮件);
}
public void setPassword(字符串密码){
LOG.debug(“设置密码:+密码”);
setTextWithJavascript(密码输入、密码);
}
公共付费支付页面点击登录按钮(){
调试(“单击“登录”按钮”);
单击WithJavaScript(登录按钮);
返回新的PayPalPaymentsPage(司机,等待);
}
}
无论我做什么,我似乎无法与电子邮件/密码输入框和登录按钮交互。获取错误,例如:没有这样的元素:无法定位元素:{“方法”:“id”,“选择器”:“btnLogin”}
我尝试过使用更好的方法通过webElement.sendKeys(字符串键)
设置输入字段的email/password,但这会导致一个错误,例如:Stack Trace org.openqa.selenium.ElementNotVisibleException:element not visible
。尝试等待元素的可见性超时。Javascript似乎是与页面交互的唯一(也是我最后的手段),但即使是Javascript也失败了
有人知道我做错了什么吗?谢谢 您试图与之交互的元素位于iframe中,因此它位于不同的文档中。您需要找到一种使用Selenium在iframe中进行选择的方法。为什么要使用Javascript单击?简单的点击就能更好的回答@Tuks谢谢,就是这样。谢谢你!如果元素位于iframe内,则可以使用“切换到框架”方法。paypal签出页面不在iframe内,它本身就是一个页面。是的。但是页面的登录部分位于iframe中。