java - 无法通过 Selenium 提交网站表单

标签 java selenium

这是 Stack Overflow 上关于我访问这个被遗弃的网站的第二篇文章:https://portal.mcpsmd.org/guardian/home.html

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

public class WebAccessor  {
    public static void main(String[] args) {

        WebDriver driver = new HtmlUnitDriver();
        driver.get("https://portal.mcpsmd.org/public/");
        System.out.println(driver.getCurrentUrl());

        // Find the text input element by its name
        WebElement username = driver.findElement(By.id("fieldAccount"));
        WebElement password = driver.findElement(By.id("fieldPassword"));

        // Enter something to search for
        username.sendKeys("");
        password.sendKeys("");

        WebElement submitBtn = driver.findElement(By.id("btn-enter"));
        submitBtn.click();

        System.out.println(driver.getCurrentUrl());
        driver.quit();
    }
}

此代码经过测试并可在 Facebook 上运行

我确信我的按钮被按下,因为当我单击“提交”时,站点 URL 会发生变化

https://portal.mcpsmd.org/public/https://portal.mcpsmd.org/guardian/home.html

当我输入用户名和密码时(由于明显的原因,无法透露实际的用户和密码),密码行实际上会在密码字段的末尾添加另外 20 个左右的字符。 (您可以通过输入任意用户名和密码并单击“提交”来查看这一点)。

这让我相信存在某种前端加密。有没有可行的登录方式?

提前非常感谢。

最佳答案

由于缺乏凭据,我的回答只是一个赌注。

但我认为您应该在登录后重定向,并进行一些调整以避免异常,如下所示:

import java.io.IOException;
import java.net.MalformedURLException;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

public class WebAccessor  {
    public static void main(String[] args) {

        WebClient WEB_CLIENT = new WebClient(BrowserVersion.CHROME);
        WEB_CLIENT.getCookieManager().setCookiesEnabled(true);
        HtmlPage loginPage;
        try {
            loginPage = WEB_CLIENT.getPage("https://portal.mcpsmd.org/public/");
            HtmlForm loginForm = loginPage.getFirstByXPath("//form[@id='LoginForm']");
            loginForm.getInputByName("account").setValueAttribute("YOURPASSWORD");
            loginForm.getInputByName("pw").setValueAttribute("YOURPASSWORD");

            loginForm.getElementsByTagName("button").get(0).click();

            HtmlPage landing = WEB_CLIENT.getPage("https://portal.mcpsmd.org/guardian/home.html#/termGrades");
            System.out.println(landing.getTitleText());
        } catch (FailingHttpStatusCodeException e) {
            // TODO Auto-generated catch block
            //e.printStackTrace();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            //e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            //e.printStackTrace();
        }


    }
}

我的输出是:学生和家长登录。但如果你设置了正确的属性,应该没问题。

关于java - 无法通过 Selenium 提交网站表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51006385/

相关文章:

selenium - 如何运行跨浏览器测试 - BrowserStack 上的 Selenium 测试

ruby - 使用 Selenium 和 Ruby 自动化 Chrome 扩展

java - Hibernate获取实体名称值

java - 尝试使用 cassandra 数据存储从 eclipse 运行 nutch 时出现 java.lang.NullPointerException

Java - InputStream - 测试输入

c# - 在滚动 SPA 时,父 div 向上移动太远后,WebDriver 将子 div 报告为 "Not Visible"

selenium - Capybara,从下拉列表中选择第一个选项?

java - 如何使用LWJGL的LZ4绑定(bind)来压缩和解压缩

java - 将字符串从 InputStream 映射到 ExecutorService

java - 如何单击其href在Selenium中具有某个子字符串的链接?