java有没有自动填写表单提交? 5C

描述:
我想用java(js)技术实现一个表单提交的操作,
打开某表单网页,用java对表单进行填充,然后提交。(其他站点)有点跨域的意思。
没有想到实现的思路,求教各位大神指点实现这种功能的思路。
谢谢!
目标网页是其他任何表单网页。

3个回答

HtmlUnit自动填写表单并提交

 package ebay;  

import java.io.IOException;  
import java.net.MalformedURLException;  

import com.gargoylesoftware.htmlunit.BrowserVersion;  
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;  
import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;  
import com.gargoylesoftware.htmlunit.WebClient;  
import com.gargoylesoftware.htmlunit.html.DomElement;  
import com.gargoylesoftware.htmlunit.html.DomNodeList;  
import com.gargoylesoftware.htmlunit.html.HtmlButton;  
import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;  
import com.gargoylesoftware.htmlunit.html.HtmlForm;  
import com.gargoylesoftware.htmlunit.html.HtmlPage;  
import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;  
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;  
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;  

public class GGManage {  
    public static void main(String[] args){  
        String sUrl="IP";//网址  
        //webclient设置  
        WebClient webClient = new WebClient(BrowserVersion.CHROME); //创建一个webclient    
        webClient.getOptions().setJavaScriptEnabled(true); // 启动JS            
        webClient.getOptions().setUseInsecureSSL(true);//忽略ssl认证              
        webClient.getOptions().setCssEnabled(false);//禁用Css,可避免自动二次请求CSS进行渲染              
        webClient.getOptions().setThrowExceptionOnScriptError(false);//运行错误时,不抛出异常     
        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);  
        webClient.setAjaxController(new NicelyResynchronizingAjaxController());// 设置Ajax异步        
        //登录  
        try {  
            HtmlPage page = (HtmlPage) webClient.getPage(sUrl);  
            HtmlForm form=page.getForms().get(0);//page.getFormByName("");  
            HtmlTextInput  txtUName = (HtmlTextInput )form.getInputByName("UserName"); //用户名text框  
            txtUName.setValueAttribute("name");  
            HtmlPasswordInput txtPwd = (HtmlPasswordInput)form.getInputByName("Password");//密码框  
            txtPwd.setValueAttribute("password");  
            //submit没有name,只有class和value属性,通过value属性定位元素  
            HtmlSubmitInput submit=(HtmlSubmitInput) form.getInputByValue("登 录");  
            page = (HtmlPage) submit.click();//登录进入  
            webClient.waitForBackgroundJavaScript(10000);//等待1秒  

            System.out.println(page.asText());  
        }catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
    }  
}  

1.跳转到登陆页面有用户名和密码的输入框和提交按钮,为了实现自动填表和自动提交
在form表单中对
input type="text" name="user_name" id="user_name" class="text width5"

加上相应的javascript代码
document.getElementByIdx_x_x("user_name").value="buyer";
实现自动填表
注意添加id名称
给form表单起个名字如form1
form method="post" name="form1" id="login_form"
加上一行javascript代码

document.form1.submit();
也可以用setTimeOut(code,second)函数,延迟几秒在跳转
2.为了实现不同用户的登陆,在点击登陆超链接进入到登陆界面的url地址后面附上flag参数,
在登陆界面增加javascript代码从url中得到参数,判断以哪个用户登陆

目前没有找到好的解决办法,这个只能使用浏览器的插件来解决!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!