이것이 가능하지 않다고 생각하므로 완전히 새로운 방식으로 문제를 조사해야합니다.Java - 파일에서 읽을 때 동적으로 사용자 이름과 암호를 루프에 삽입하십시오.
내 Java 프로그램이 웹 양식에 연결하여 로그인합니다. 코드의 다른 부분에 사용자 이름과 비밀번호가 있습니다. HTML 양식에는 분명히 다른 입력 유형이 포함됩니다. 사용자 및 사이트에 따라 각 필드의 이름이 다르게 지정됩니다. 다음은 샘플 웹 양식의이 형태에서
<FORM METHOD=POST ACTION="/my.form">
Username:
<INPUT NAME="username">
<BR>
Password
<INPUT TYPE="PASSWORD" NAME="password">
<INPUT TYPE="HIDDEN" NAME="my-hidden-name" VALUE="someValue">
<BR><INPUT TYPE="SUBMIT" VALUE="Login">
</FORM>
의 NAME
필드는 무엇이든 될 수 있으며, 사이트 형태로 사이트를 변경합니다. 나는 예를 들어 필드를 저장하는 PROPERTIES
파일을 요구함으로써이 문제를 해결 왔 : 이것은 위의 필드의 절반을 작동
username
password
my-hidden-name=someValue
SUBMIT=Login
. 문제는 username
및 password
필드입니다.
나는 이미 사용자 이름과 암호를 가지고 있으므로, 단지 if(currentField=="password") string=mypass123
일 수 있습니다. 그렇다면 누군가가 사용자 이름/암호 필드가 user1
또는 passwordField
이라고하는 양식을 만들거나 기본적으로 내가 입력 한 것 이외의 양식을 만들 경우 어떻게해야합니까? if()
!!
누구든지 이름을 조합하여 처리 할 수있는 방법을 제안 할 수 있으며 어떤 사용자 이름과 암호 필드인지 식별 할 수 있습니까? 현재 코드는 다음과 같습니다.
//Read file logic here
Properties formProps=getDataFromResource(pathToFormFieldsPropfile);
if(null!=formProps)
{
//Gets a list of all the field names, eg "username", "password", "submit"
Enumeration<?> formFields=formProps.keys();
while(formFields.hasMoreElements())
{
String tempString=(String) formFields.nextElement(); //This gets the field name
query+=tempString //Will contain field name
+"=" //Used as a divider in the querystring, ie field=value
+formProps.get(tempString) //Value corresponding to field
//+ URLEncoder.encode((String) formProps.get(tempString),Charset.defaultCharset().toString()) //The value needs to be encoded for POST
+"&"; //The trailing one of these will have to be removed at the end
}
}
감사합니다.
죄송하지만 "id 요소"는 무엇입니까? – eoinzy
명명 규칙은 사이트가 이미 만들어져 있으므로 필드 이름이 이미 있습니다. 나는 최악의 최악에 오면, 나는 특성이 밑줄 또는 앞에 추가 뭔가 파일에 다음, 사용자 이름을 넣어 처리를 수행하고, 마지막으로 추가되는 말머리 물건을 손질하도록 강제 할 수 있습니다 가정합니다. 이미 내가 선택한 어떤 패턴 으로든 필드가 이미 시작된 웹 사이트가 있으면 문제가 있습니다. – eoinzy