Java Selenium“无法找到用于提交表单的元素”

Java Selenium“无法找到用于提交表单的元素”,java,forms,selenium,submit,Java,Forms,Selenium,Submit,我正在使用Selenium库尝试为我登录。它可以找到所有元素,但在调用.submit方法时,我得到一个无法定位用于提交表单错误的元素。使用button.click时,不会发生任何事情。谢谢 package com.logansnow.marketwatch; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.

我正在使用Selenium库尝试为我登录。它可以找到所有元素,但在调用.submit方法时,我得到一个无法定位用于提交表单错误的元素。使用button.click时,不会发生任何事情。谢谢

package com.logansnow.marketwatch;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.Keys;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class Main {

    public static void main(String[] args){

        java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
        java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);

        WebDriver driver = new HtmlUnitDriver();
        driver.get("https://id.marketwatch.com/access/50eb2d087826a77e5d000001/latest/login_standalone.html?url=http%3A%2F%2Fwww.marketwatch.com%2Fuser%2Flogin%2Fstatus");
        WebElement email = driver.findElement(By.name("username"));
        WebElement loginPass = driver.findElement(By.name("password"));
        WebElement button = driver.findElement(By.id("submitButton"));
        email.sendKeys("***********@gmail.com");
        loginPass.sendKeys("******************");
        //loginPass.submit();
        driver.findElement(By.className("login_submit")).click();
        email.submit();
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(driver.getTitle());

    }

}

问题似乎源于email.submit;陈述你需要两个陈述中的一个来提交表单

package com.logansnow.marketwatch;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.Keys;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class Main {

    public static void main(String[] args){

        java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
        java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);

        WebDriver driver = new HtmlUnitDriver();
        driver.get("https://id.marketwatch.com/access/50eb2d087826a77e5d000001/latest/login_standalone.html?url=http%3A%2F%2Fwww.marketwatch.com%2Fuser%2Flogin%2Fstatus");
        WebElement email = driver.findElement(By.name("username"));
        WebElement loginPass = driver.findElement(By.name("password"));
        WebElement button = driver.findElement(By.id("submitButton"));
        email.sendKeys("***********@gmail.com");
        loginPass.sendKeys("******************");
        //loginPass.submit();

        // Click on the submit button to submit the form.
        driver.findElement(By.className("login_submit")).click();

        // Can also use this since you already have WebElement referencing the submit button.
        // button.click();

        // Or invoke submit on the button element
        // button.submit();

        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(driver.getTitle());
    }
}

请使用下面的内容提交。只需将您的提交代码替换为以下代码:


driver.findElementBy.idsubmitButton.click

如果您的网页包含javascript,HTMLUnitDriver默认情况下不会启用javascript

确保使用构造函数参数启用javascript

WebDriver driver = new HtmlUnitDriver();

在HtmlUnitDriver中,未启用javascript。请尝试将驱动程序初始化为-WebDriver driver=new HtmlUnitDrivertrue;嘿,我向构造函数传递了true,现在当我使用submit时它不会给我一个错误,但它仍然不会将我带到一个新页面。我不明白你说的有什么不同。