[英]Passing values in 2 strings and removing them from a .txt file
我有一个问题,我要在2个字符串中传递2个值(Facebook用户名和Facebook密码),然后从.txt文件中删除它们。
这是我的代码:
private static String[] fbuser;
private static String[] fbpass;
FileReader fr;
BufferedReader br;
PrintWriter pw;
String tmp;
int FileContentCount;
int noOfUsers = 3;
public void insertFacebookDetails() throws InterruptedException {
fbuser = new String[noOfUsers];
fbpass = new String[noOfUsers];
String UserFileName = "fbusers.txt";
try {
fr = new FileReader(UserFileName);
br = new BufferedReader(fr);
FileContentCount = 0;
while ((tmp = br.readLine()) != null) {
fbuser[FileContentCount] = tmp;
tmp = br.readLine();
fbpass[FileContentCount] = tmp;
FileContentCount++;
}
br.close();
fr.close();
System.out.println(fbuser[0] + ": " + fbpass[0]);
pw = new PrintWriter(UserFileName);
int count = 1;
while (count < FileContentCount) {
pw.write(fbuser[count] + "\n");
pw.write(fbpass[count] + "\n");
count++;
}
pw.flush();
pw.close();
}
catch (Exception e) {
System.out.println(e);
}
for (String fbLogin : driver.getWindowHandles()) {
driver.switchTo().window(fbLogin);
}
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(EMAIL)));
driver.findElement(By.id(EMAIL)).sendKeys(fbuser);
driver.findElement(By.id(PASSWORD)).sendKeys(fbpass);
Thread.sleep(2000);
driver.findElement(By.name(LOGIN)).click();
}
我的用户在.txt文件中的顺序是:
当它找到电子邮件ID时,实际上会发送3个用户(因为noOfUsers值为3),但是如果我输入一个比这个数字低的数字,它将无法正常工作。 (获取arrayoutofbounds错误)
第二个问题是它不会从.txt文件中删除用户。
我也不知道将以下代码放在哪里:
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(EMAIL)));
driver.findElement(By.id(EMAIL)).sendKeys(fbuser);
driver.findElement(By.id(PASSWORD)).sendKeys(fbpass);
Thread.sleep(2000);
driver.findElement(By.name(LOGIN)).click();
我知道它需要在它读取后和删除它之前的某个位置。 我尝试了所有可能的方法,但我感到困惑。
谁能帮我吗?
编辑:这是代码在抽象类中的外观
public static void readFile() {
try(BufferedReader reader = new BufferedReader(new FileReader(fileName))){
String tmp;
while((tmp = reader.readLine())!= null){
fbUsers.add(tmp);
System.out.println(tmp);
}
System.out.println(fbUsers.size());
} catch (IOException e) {
System.out.println(e);
}
}
public static void writeFile() {
try(BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))){
for(String fbUser : fbUsers){
writer.write(fbUser);
writer.newLine();
}
} catch (IOException e) {
System.out.println(e);
}
}
@SuppressWarnings("unused")
public void insertFacebookDetails(String fbUser) throws InterruptedException {
readFile();
for (String fbLogin : driver.getWindowHandles()) {
driver.switchTo().window(fbLogin);
}
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(EMAIL)));
String username = fbUser.split("/")[0];
String password = fbUser.split("/")[1];
fbUsers.remove(fbUser);
driver.findElement(By.id(EMAIL)).sendKeys(username);
driver.findElement(By.id(PASSWORD)).sendKeys(password);
Thread.sleep(2000);
driver.findElement(By.name(LOGIN)).click();
writeFile();
}
这是我在另一个类中调用方法的地方:
public void step1() {
insertFacebookDetails(fbUsers.get(0));
}
这是一个示例,您可以如何从文件中读取用户并从登录文件中删除用户:
首先,将用户这样存储在fbusers.txt
文件中:
fb_user1 / fb_pass1
fb_user2 / fb_pass2
fb_user3 / fb_pass3
等等...
然后,我们使用List<String>
代替String[]
因为它会自动展开。 因此,通过向其添加fbUsers不会得到arrayOutOfBounds异常。
首先,我们从文件中读取所有fbUsers:
public static void readFile(){
try(BufferedReader reader = new BufferedReader(new FileReader(fileName))){
String tmp;
while((tmp = reader.readLine())!= null){
fbUsers.add(tmp);
System.out.println(tmp);
}
} catch (IOException e){
e.printStackTrace();
}
}
因此,现在所有fbUsers都以以下格式存储在我们的列表中: fb_user1/fb_pass1
现在,我们将使用我们的fb_users之一登录:
public static void login(String fbUser){
String userName = fbUser.split("/")[0]; //get UserName from fbUser
String password = fbUser.split("/")[1]; //get Password from fbUser
fbUsers.remove(fbUser); //remove the fbUser with which we have logged in
//code to login
}
最后,我们将fbUsers写入而没有在文件中重新登录的fbUsers:
public static void writeFile(){
try(BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))){
for(String fbUser : fbUsers){
writer.write(fbUser);
writer.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
这是主要方法:
private static final String fileName = "fbusers.txt";
private static final List<String> fbUsers = new ArrayList<>();
public static void main(String[] args){
readFile();
login(fbUsers.get(0));
writeFile();
}
希望它对您有所帮助,您可以继续进行本示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.