Javascript Selenium:无法在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登录页面(),以实现自动化,无论我做什么,我似乎都无法单击页面上的登录按钮。
以下是页面的外观: 以下是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中。